module GraphQL::Schema::Member::AcceptsDefinition::AcceptsDefinitionDefinitionMethods

Public Instance Methods

accepts_definition(name) click to toggle source
# File lib/graphql/schema/member/accepts_definition.rb, line 62
def accepts_definition(name)
  own_accepts_definition_methods << name

  ivar_name = "@#{name}_args"
  if self.is_a?(Class)
    define_singleton_method(name) do |*args|
      if args.any?
        instance_variable_set(ivar_name, args)
      end
      instance_variable_get(ivar_name) || (superclass.respond_to?(name) ? superclass.public_send(name) : nil)
    end

    define_method(name) do |*args|
      if args.any?
        instance_variable_set(ivar_name, args)
      end
      instance_variable_get(ivar_name)
    end
  else
    # Special handling for interfaces, define it here
    # so it's appropriately passed down
    self::DefinitionMethods.module_eval do
      define_method(name) do |*args|
        if args.any?
          instance_variable_set(ivar_name, args)
        end
        instance_variable_get(ivar_name) || ((int = interfaces.first { |i| i.respond_to?()}) && int.public_send(name))
      end
    end
  end
end
accepts_definition_methods() click to toggle source
# File lib/graphql/schema/member/accepts_definition.rb, line 94
def accepts_definition_methods
  inherited_methods = if self.is_a?(Class)
    superclass.respond_to?(:accepts_definition_methods) ? superclass.accepts_definition_methods : []
  elsif self.is_a?(Module)
    m = []
    ancestors.each do |a|
      if a.respond_to?(:own_accepts_definition_methods)
        m.concat(a.own_accepts_definition_methods)
      end
    end
    m
  else
    self.class.accepts_definition_methods
  end

  own_accepts_definition_methods + inherited_methods
end
own_accepts_definition_methods() click to toggle source
# File lib/graphql/schema/member/accepts_definition.rb, line 112
def own_accepts_definition_methods
  @own_accepts_definition_methods ||= []
end