class Graphlyte::Builder

Public Class Methods

new(fields = []) click to toggle source
# File lib/graphlyte/builder.rb, line 6
def initialize(fields = [])
  @fields = fields
end

Public Instance Methods

<<(buildable) click to toggle source
# File lib/graphlyte/builder.rb, line 10
def <<(buildable)
  raise "Must pass a Fieldset or Fragment" unless [Fragment, Fieldset].include?(buildable.class)

  @fields.concat(buildable.fields) if buildable.class.eql? Fieldset

  # todo: handle fragments better, it's not a field
  @fields << buildable if buildable.class.eql? Fragment
end
>() click to toggle source
# File lib/graphlyte/builder.rb, line 43
def >
  self
end
>>() click to toggle source

for internal use only

# File lib/graphlyte/builder.rb, line 39
def >>
  @fields
end
method_missing(method, fieldset_or_hargs=nil, hargs={}, &block) click to toggle source
# File lib/graphlyte/builder.rb, line 19
def method_missing(method, fieldset_or_hargs=nil, hargs={}, &block)
  # todo: camel case method

  # hack for ruby bug in lower versions
  if [Fieldset, Fragment].include?(fieldset_or_hargs.class)
    field = Field.new(method, fieldset_or_hargs, hargs)
  else
    field = Field.new(method, Fieldset.empty, fieldset_or_hargs)
  end

  field.fieldset.builder.>.instance_eval(&block) if block
  @fields << field
  field
end
respond_to_missing() click to toggle source
# File lib/graphlyte/builder.rb, line 34
def respond_to_missing
  true
end