class GQLi::Node
Node
wrapper
Attributes
__params[R]
Public Class Methods
new(name, params = {}, depth = 1, &block)
click to toggle source
Calls superclass method
GQLi::Base::new
# File lib/gqli/node.rb, line 10 def initialize(name, params = {}, depth = 1, &block) super(name, depth, &block) @__params = params end
Public Instance Methods
to_gql()
click to toggle source
Serializes to a GraphQL string
# File lib/gqli/node.rb, line 16 def to_gql result = ' ' * __depth + __name result += __params_to_s(__params, true) unless __params.empty? unless __nodes.empty? result += " {\n" result += __nodes.map(&:to_gql).join("\n") result += "\n#{' ' * __depth}}" end result end
Private Instance Methods
__directive(params)
click to toggle source
# File lib/gqli/node.rb, line 34 def __directive(params) params.first.tap do |directive, directive_params| return " #{directive}#{__params_to_s(directive_params, true)}" end end
__directive?(params)
click to toggle source
# File lib/gqli/node.rb, line 30 def __directive?(params) params.size == 1 && params.keys.first.to_s.start_with?('@') end
__params_to_s(params, initial = false)
click to toggle source
# File lib/gqli/node.rb, line 40 def __params_to_s(params, initial = false) case params when ::Hash return __directive(params) if __directive?(params) result = params.map do |k, v| "#{k}: #{__params_to_s(v)}" end.join(', ') return "(#{result})" if initial "{#{result}}" when ::Array "[#{params.map { |p| __params_to_s(p) }.join(', ')}]" when ::String "\"#{params}\"" else params.to_s end end