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.



139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/graphql/define/instance_definable.rb', line 139

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

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



130
131
132
133
134
# File 'lib/graphql/define/instance_definable.rb', line 130

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

#dictionaryHash

Returns combined definitions for self and ancestors.

Returns:

  • (Hash)

    combined definitions for self and ancestors



169
170
171
172
173
174
175
# File 'lib/graphql/define/instance_definable.rb', line 169

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

#ensure_defined(*method_names) ⇒ Object



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

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

#ensure_defined_method_namesObject



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

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



178
179
180
# File 'lib/graphql/define/instance_definable.rb', line 178

def own_dictionary
  @own_dictionary ||= {}
end