Sha256: 026b9a0fbe8a9742c699eef1750905c7f949d286ab0600037f5383afcda34549

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

# Implement validate_node
class GraphQL::StaticValidation::ArgumentsValidator
  include GraphQL::StaticValidation::Message::MessageHelper

  def validate(context)
    visitor = context.visitor
    visitor[GraphQL::Language::Nodes::Argument] << -> (node, parent) {
      if parent.is_a?(GraphQL::Language::Nodes::InputObject)
        arg_defn = context.argument_definition
        if arg_defn.nil?
          return
        else
          parent_defn = arg_defn.type.unwrap
          puts "#{node}"
          puts "#{parent_defn}"
          if parent_defn.is_a?(GraphQL::ScalarType)
            return
          end
        end
      elsif context.skip_field?(parent.name)
        return
      elsif parent.is_a?(GraphQL::Language::Nodes::Directive)
        parent_defn = context.schema.directives[parent.name]
      else
        parent_defn = context.field_definition
      end
      validate_node(parent, node, parent_defn, context)
    }
  end

  private

  def parent_name(parent, type_defn)
    field_name = if parent.is_a?(GraphQL::Language::Nodes::Field)
      parent.alias || parent.name
    elsif parent.is_a?(GraphQL::Language::Nodes::InputObject)
      type_defn.name
    else
      parent.name
    end
  end

  def node_type(parent)
    parent.class.name.split("::").last
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
graphql-0.10.5 lib/graphql/static_validation/arguments_validator.rb