class GQLi::Base
Base
class for GraphQL type wrappers
Attributes
__depth[R]
__name[R]
__nodes[R]
Public Class Methods
new(name = nil, depth = 0, &block)
click to toggle source
# File lib/gqli/base.rb, line 10 def initialize(name = nil, depth = 0, &block) @__name = name @__depth = depth @__nodes = [] instance_eval(&block) unless block.nil? end
Public Instance Methods
___(fragment)
click to toggle source
Inlines fragment nodes into current node
# File lib/gqli/base.rb, line 18 def ___(fragment) @__nodes += __clone_nodes(fragment) end
__enum(value)
click to toggle source
Creates an EnumType value
# File lib/gqli/base.rb, line 34 def __enum(value) EnumValue.new(value) end
__node(name, params = {}, &block)
click to toggle source
Adds children node into current node
# File lib/gqli/base.rb, line 28 def __node(name, params = {}, &block) require_relative './node' @__nodes << Node.new(name, params, __depth + 1, &block) end
__on(type_name, &block)
click to toggle source
Adds type match node
# File lib/gqli/base.rb, line 23 def __on(type_name, &block) __node("... on #{type_name}", {}, &block) end
Protected Instance Methods
__clone(obj)
click to toggle source
# File lib/gqli/base.rb, line 52 def __clone(obj) Marshal.load(Marshal.dump(obj)) end
__clone_nodes(node_container)
click to toggle source
# File lib/gqli/base.rb, line 40 def __clone_nodes(node_container) require_relative './node' __clone(node_container.__nodes).map do |n| node = Node.new(n.__name, n.__params, __depth + 1) node.instance_variable_set( :@__nodes, node.send(:__clone_nodes, n) ) node end end
__params_from_args(args)
click to toggle source
# File lib/gqli/base.rb, line 56 def __params_from_args(args) args.empty? ? {} : args[0] end
method_missing(name, *args, &block)
click to toggle source
# File lib/gqli/base.rb, line 60 def method_missing(name, *args, &block) __node(name.to_s, __params_from_args(args), &block) end