Class: GraphQL::Argument

Inherits:
Object
  • Object
show all
Includes:
Define::InstanceDefinable
Defined in:
lib/graphql/argument.rb

Defined Under Namespace

Modules: DefaultPrepare

Constant Summary collapse

NO_DEFAULT_VALUE =
Object.new

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Define::InstanceDefinable

#define, #deprecated_define, #metadata, #redefine

Constructor Details

#initializeArgument

Returns a new instance of Argument.

[View source]

20
21
22
# File 'lib/graphql/argument.rb', line 20

def initialize
  @prepare_proc = DefaultPrepare
end

Instance Attribute Details

#asObject


8
9
10
# File 'lib/graphql/argument.rb', line 8

def as
  @as
end

#ast_nodeObject


9
10
11
# File 'lib/graphql/argument.rb', line 9

def ast_node
  @ast_node
end

#default_valueObject


7
8
9
# File 'lib/graphql/argument.rb', line 7

def default_value
  @default_value
end

#deprecation_reasonObject


8
9
10
# File 'lib/graphql/argument.rb', line 8

def deprecation_reason
  @deprecation_reason
end

#descriptionObject


8
9
10
# File 'lib/graphql/argument.rb', line 8

def description
  @description
end

#method_accessObject


10
11
12
# File 'lib/graphql/argument.rb', line 10

def method_access
  @method_access
end

#nameString Also known as: graphql_name

Returns The name of this argument on its Field or InputObjectType.

Returns:


47
48
49
# File 'lib/graphql/argument.rb', line 47

def name
  @name
end

Class Method Details

.deep_stringify(val) ⇒ 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.

[View source]

116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/graphql/argument.rb', line 116

def self.deep_stringify(val)
  case val
  when Array
    val.map { |v| deep_stringify(v) }
  when Hash
    new_val = {}
    val.each do |k, v|
      new_val[k.to_s] = deep_stringify(v)
    end
    new_val
  else
    val
  end
end

.from_dsl(name, type_or_argument = nil, description = nil, default_value: NO_DEFAULT_VALUE, as: nil, prepare: DefaultPrepare, **kwargs, &block) ⇒ 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.

[View source]

90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/graphql/argument.rb', line 90

def self.from_dsl(name, type_or_argument = nil, description = nil, default_value: NO_DEFAULT_VALUE, as: nil, prepare: DefaultPrepare, **kwargs, &block)
  name_s = name.to_s

  # Move some positional args into keywords if they're present
  description && kwargs[:description] ||= description
  kwargs[:name] ||= name_s
  kwargs[:default_value] ||= default_value
  kwargs[:as] ||= as

  unless prepare == DefaultPrepare
    kwargs[:prepare] ||= prepare
  end

  if !type_or_argument.nil? && !type_or_argument.is_a?(GraphQL::Argument)
    # Maybe a string, proc or BaseType
    kwargs[:type] = type_or_argument
  end

  if type_or_argument.is_a?(GraphQL::Argument)
    type_or_argument.redefine(**kwargs, &block)
  else
    GraphQL::Argument.define(**kwargs, &block)
  end
end

Instance Method Details

#default_value?Boolean

Returns:

  • (Boolean)
[View source]

28
29
30
# File 'lib/graphql/argument.rb', line 28

def default_value?
  !!@has_default_value
end

#expose_asString

Returns The name of this argument inside resolve functions.

Returns:

  • (String)

    The name of this argument inside resolve functions

[View source]

62
63
64
# File 'lib/graphql/argument.rb', line 62

def expose_as
  @expose_as ||= (@as || @name).to_s
end

#initialize_copy(other) ⇒ Object

[View source]

24
25
26
# File 'lib/graphql/argument.rb', line 24

def initialize_copy(other)
  @expose_as = nil
end

#keywordObject

Backport this to support legacy-style directives

[View source]

67
68
69
# File 'lib/graphql/argument.rb', line 67

def keyword
  @keyword ||= GraphQL::Schema::Member::BuildType.underscore(expose_as).to_sym
end

#method_access?Boolean

Returns:

  • (Boolean)
[View source]

32
33
34
35
# File 'lib/graphql/argument.rb', line 32

def method_access?
  # Treat unset as true -- only `false` should override
  @method_access != false
end

#prepare(value, ctx) ⇒ Object

Returns The prepared value for this argument or value itself if no prepare function exists.

Parameters:

Returns:

  • (Object)

    The prepared value for this argument or value itself if no prepare function exists.

[View source]

74
75
76
# File 'lib/graphql/argument.rb', line 74

def prepare(value, ctx)
  @prepare_proc.call(value, ctx)
end

#prepare=(prepare_proc) ⇒ Object

Assign a prepare function to prepare this argument’s value before resolve functions are called.

Parameters:

  • prepare_proc (#<call(value, ctx))

    ]

[View source]

80
81
82
# File 'lib/graphql/argument.rb', line 80

def prepare=(prepare_proc)
  @prepare_proc = BackwardsCompatibility.wrap_arity(prepare_proc, from: 1, to: 2, name: "Argument#prepare(value, ctx)")
end

#typeGraphQL::BaseType

Returns the input type for this argument.

Returns:

[View source]

57
58
59
# File 'lib/graphql/argument.rb', line 57

def type
  @clean_type ||= GraphQL::BaseType.resolve_related_type(@dirty_type)
end

#type=(new_input_type) ⇒ Object

Parameters:

  • new_input_type (GraphQL::BaseType, Proc)

    Assign a new input type for this argument (if it’s a proc, it will be called after schema initialization)

[View source]

51
52
53
54
# File 'lib/graphql/argument.rb', line 51

def type=(new_input_type)
  @clean_type = nil
  @dirty_type = new_input_type
end

#type_classObject

[View source]

84
85
86
# File 'lib/graphql/argument.rb', line 84

def type_class
  [:type_class]
end