Class: GraphQL::Configuration::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/configuration/configuration.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ Base

Returns a new instance of Base.



8
9
10
11
12
13
# File 'lib/graphql/configuration/configuration.rb', line 8

def initialize(*args, &block)
  options = args.last.instance_of?(Hash) ? args.pop : {}
  slots.each { |key, slot| options[(slot.singular || slot.name).to_sym] = args.shift if args.size > 0 }
  options.each { |key, value| public_send(key, value) }
  instance_eval(&block) if block_given?
end

Class Method Details

.coerce(slot, *args, &block) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/graphql/configuration/configuration.rb', line 34

def coerce(slot, *args, &block)
  if args.size == 1 && !block_given?
    value = args.first
    return value if value.is_a?(slot.effective_type)
    value = slot.coerce.nil? ? value : slot.coerce.call(value)
    return value if value.is_a?(slot.effective_type)
    return value if value.is_a?(Proc)
  end
  slot.effective_type.new(*args, &block)
end

.inherited(base) ⇒ Object



20
21
22
# File 'lib/graphql/configuration/configuration.rb', line 20

def inherited(base)
  base.instance_variable_set(:"@slots", @slots)
end

.slot(*args, &block) ⇒ Object



28
29
30
31
32
# File 'lib/graphql/configuration/configuration.rb', line 28

def slot(*args, &block)
  slot = Slot.new(*args, &block)
  define_accessors(slot)
  slots[slot.name] = slot
end

.slotsObject



24
25
26
# File 'lib/graphql/configuration/configuration.rb', line 24

def slots
  @slots ||= {}
end

Instance Method Details

#slotsObject



15
16
17
# File 'lib/graphql/configuration/configuration.rb', line 15

def slots
  self.class.slots
end