class Shirtsio::DSL::QueryBuilder

Public Class Methods

new(dsl, prefixes_with_index = []) { |self| ... } click to toggle source
# File lib/shirtsio/dsl.rb, line 65
def initialize(dsl, prefixes_with_index = [], &block)
  @dsl = dsl
  @prefixes_with_index = []
  @prefixes_with_index << prefixes_with_index
  @prefixes_with_index.flatten!
  @params = {}
  yield self
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/shirtsio/dsl.rb, line 74
def method_missing(method, *args, &block)
  index = extract_index(method.to_sym)
  return super unless index
  params = {}
  if index.kind_of?(Symbol)
    if args[0].kind_of?(Array)
      args[0].each_with_index do |v,i|
        params[method] = { i => v }
      end
    elsif args[0].kind_of?(File)
      params[method] = Faraday::UploadIO.new(args[0].path, Shirtsio::Utils.mime_type(args[0].path))
    else
      params[method] = args[0]
    end
  elsif index.kind_of?(Array)
    params[method] = QueryBuilder.new(index, @prefixes_with_index, &block).to_hash
  end
  params.map do |k,v|
    if @prefixes_with_index.include?(k)
      @params[k] = {} if @params[k].nil?
      @params[k].merge!({ @params[k].size => v })
    else
      @params.merge!({ k => v })
    end
  end
end
to_hash() click to toggle source
# File lib/shirtsio/dsl.rb, line 101
def to_hash
  @params
end

Private Instance Methods

extract_index(method) click to toggle source
# File lib/shirtsio/dsl.rb, line 106
def extract_index(method)
  return method if @dsl.include?(method)
  @dsl.each do |i|
    if i.kind_of?(Hash) && !i[method].nil?
      return i[method]
    end
  end
  nil
end