Module: GQL::HasCalls::ClassMethods

Defined in:
lib/gql/has_calls.rb

Instance Method Summary collapse

Instance Method Details

#add_call(id, *args, &block) ⇒ Object Also known as: call



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/gql/has_calls.rb', line 17

def add_call(id, *args, &block)
  options = args.extract_options!

  call_spec = args.shift || block || proc_for_call(id)
  result_spec = options[:returns] || call_spec.try(:result_class)
  result_class = result_class_from_spec(result_spec)

  Node.validate_is_subclass! result_class, 'result' if result_class

  call_class = call_class_from_spec(call_spec)
  call_class.id = id.to_s
  call_class.result_class = result_class

  if result_class && result_class.name.nil?
    call_class.const_set :Result, result_class
  end

  self.const_set const_name_for_call(id), call_class
  self.calls = calls.merge(id.to_sym => call_class)
end

#has_call?(id) ⇒ Boolean

Returns:



47
48
49
# File 'lib/gql/has_calls.rb', line 47

def has_call?(id)
  calls.has_key? id
end

#remove_call(id) ⇒ Object



40
41
42
43
44
45
# File 'lib/gql/has_calls.rb', line 40

def remove_call(id)
  const_name = const_name_for_call(id)

  send :remove_const, const_name if const_defined?(const_name)
  calls.delete id
end