Module: GraphQL::Schema::Member::HasArguments Private

Included in:
Directive, Field, InputObject, Resolver
Defined in:
lib/graphql/schema/member/has_arguments.rb

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Defined Under Namespace

Modules: ArgumentClassAccessor, ArgumentObjectLoader

Instance Method Summary collapse

Instance Method Details

#add_argument(arg_defn) ⇒ GraphQL::Schema::Argument

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Register this argument with the class.

Parameters:

Returns:



50
51
52
53
# File 'lib/graphql/schema/member/has_arguments.rb', line 50

def add_argument(arg_defn)
  own_arguments[arg_defn.name] = arg_defn
  arg_defn
end

#argument(*args, **kwargs, &block) ⇒ GraphQL::Schema::Argument

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns An instance of arguments_class, created from *args

Returns:

See Also:

  • for parameters


41
42
43
44
45
# File 'lib/graphql/schema/member/has_arguments.rb', line 41

def argument(*args, **kwargs, &block)
  kwargs[:owner] = self
  arg_defn = self.argument_class.new(*args, **kwargs, &block)
  add_argument(arg_defn)
end

#argument_class(new_arg_class = nil) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • new_arg_class (Class) (defaults to: nil)

    A class to use for building argument definitions



67
68
69
# File 'lib/graphql/schema/member/has_arguments.rb', line 67

def argument_class(new_arg_class = nil)
  self.class.argument_class(new_arg_class)
end

#argument_with_loads(*args, **kwargs) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/graphql/schema/member/has_arguments.rb', line 16

def argument_with_loads(*args, **kwargs)
  loads = kwargs[:loads]
  if loads
    name = args[0]
    name_as_string = name.to_s

    inferred_arg_name = case name_as_string
    when /_id$/
      name_as_string.sub(/_id$/, "").to_sym
    when /_ids$/
      name_as_string.sub(/_ids$/, "")
        .sub(/([^s])$/, "\\1s")
        .to_sym
    else
      name
    end

    kwargs[:as] ||= inferred_arg_name
  end

  return [*args, **kwargs]
end

#argumentsHash<String => GraphQL::Schema::Argument] Arguments defined on this thing, keyed by name. Includes inherited definitions

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns Hash<String => GraphQL::Schema::Argument] Arguments defined on this thing, keyed by name. Includes inherited definitions

Returns:

  • (Hash<String => GraphQL::Schema::Argument] Arguments defined on this thing, keyed by name. Includes inherited definitions)

    Hash<String => GraphQL::Schema::Argument] Arguments defined on this thing, keyed by name. Includes inherited definitions



56
57
58
59
60
61
62
63
64
# File 'lib/graphql/schema/member/has_arguments.rb', line 56

def arguments
  inherited_arguments = ((self.is_a?(Class) && superclass.respond_to?(:arguments)) ? superclass.arguments : nil)
  # Local definitions override inherited ones
  if inherited_arguments
    inherited_arguments.merge(own_arguments)
  else
    own_arguments
  end
end

#own_argumentsObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



138
139
140
# File 'lib/graphql/schema/member/has_arguments.rb', line 138

def own_arguments
  @own_arguments ||= {}
end