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.
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
|