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