Module: GraphQL::Define::InstanceDefinable::ClassMethods

Defined in:
lib/graphql/define/instance_definable.rb

Instance Method Summary collapse

Instance Method Details

#accepts_definitions(*accepts) ⇒ Object

Attach definitions to this class. Each symbol in accepts will be assigned with {key}=. The last entry in accepts may be a hash of name-proc pairs for custom definitions.



169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/graphql/define/instance_definable.rb', line 169

def accepts_definitions(*accepts)
  new_assignments = if accepts.last.is_a?(Hash)
    accepts.pop.dup
  else
    {}
  end

  accepts.each do |key|
    new_assignments[key] = AssignAttribute.new(key)
  end

  @own_dictionary = own_dictionary.merge(new_assignments)
end

#define(**kwargs, &block) ⇒ Object



160
161
162
163
164
# File 'lib/graphql/define/instance_definable.rb', line 160

def define(**kwargs, &block)
  instance = self.new
  instance.define(**kwargs, &block)
  instance
end

#deprecated_define(**kwargs, &block) ⇒ Object

Create a new instance and prepare a definition using its definitions.

Parameters:

  • kwargs (Hash)

    Key-value pairs corresponding to defininitions from accepts_definitions

  • block (Proc)

    Block which calls helper methods from accepts_definitions



153
154
155
156
157
# File 'lib/graphql/define/instance_definable.rb', line 153

def deprecated_define(**kwargs, &block)
  instance = self.new
  instance.deprecated_define(**kwargs, &block)
  instance
end

#dictionaryHash

Returns combined definitions for self and ancestors.

Returns:

  • (Hash)

    combined definitions for self and ancestors



199
200
201
202
203
204
205
# File 'lib/graphql/define/instance_definable.rb', line 199

def dictionary
  if superclass.respond_to?(:dictionary)
    own_dictionary.merge(superclass.dictionary)
  else
    own_dictionary
  end
end

#ensure_defined(*method_names) ⇒ Object



183
184
185
186
187
# File 'lib/graphql/define/instance_definable.rb', line 183

def ensure_defined(*method_names)
  @ensure_defined_method_names ||= []
  @ensure_defined_method_names.concat(method_names)
  nil
end

#ensure_defined_method_namesObject



189
190
191
192
193
194
195
196
# File 'lib/graphql/define/instance_definable.rb', line 189

def ensure_defined_method_names
  own_method_names = @ensure_defined_method_names || []
  if superclass.respond_to?(:ensure_defined_method_names)
    superclass.ensure_defined_method_names + own_method_names
  else
    own_method_names
  end
end

#own_dictionaryHash

Returns definitions for this class only.

Returns:

  • (Hash)

    definitions for this class only



208
209
210
# File 'lib/graphql/define/instance_definable.rb', line 208

def own_dictionary
  @own_dictionary ||= {}
end