Module: GraphQL::Define::InstanceDefinable::ClassMethods
- Defined in:
- lib/graphql/define/instance_definable.rb
Instance Method Summary collapse
-
#accepts_definitions(*accepts) ⇒ Object
Attach definitions to this class.
-
#define(**kwargs, &block) ⇒ Object
Create a new instance and prepare a definition using its definitions.
-
#dictionary ⇒ Hash
Combined definitions for self and ancestors.
-
#lazy_defined_attr_accessor(*attr_names) ⇒ Object
Define a reader and writer for each of
attr_names
which ensures that the definition block was called before accessing it. -
#own_dictionary ⇒ Hash
Definitions for this class only.
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.
163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/graphql/define/instance_definable.rb', line 163 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.
154 155 156 157 158 |
# File 'lib/graphql/define/instance_definable.rb', line 154 def define(**kwargs, &block) instance = self.new instance.define(**kwargs, &block) instance end |
#dictionary ⇒ Hash
Returns combined definitions for self and ancestors.
195 196 197 198 199 200 201 |
# File 'lib/graphql/define/instance_definable.rb', line 195 def dictionary if superclass.respond_to?(:dictionary) own_dictionary.merge(superclass.dictionary) else own_dictionary end end |
#lazy_defined_attr_accessor(*attr_names) ⇒ Object
Define a reader and writer for each of attr_names
which
ensures that the definition block was called before accessing it.
179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/graphql/define/instance_definable.rb', line 179 def lazy_defined_attr_accessor(*attr_names) attr_names.each do |attr_name| ivar_name = :"@#{attr_name}" define_method(attr_name) do ensure_defined instance_variable_get(ivar_name) end define_method("#{attr_name}=") do |new_value| ensure_defined instance_variable_set(ivar_name, new_value) end end end |
#own_dictionary ⇒ Hash
Returns definitions for this class only.
204 205 206 |
# File 'lib/graphql/define/instance_definable.rb', line 204 def own_dictionary @own_dictionary ||= {} end |