Class: NRSER::Meta::Props::Prop
- Inherits:
-
Object
- Object
- NRSER::Meta::Props::Prop
- Defined in:
- lib/nrser/meta/props/prop.rb
Instance Attribute Summary collapse
-
#defined_in ⇒ Object
Returns the value of attribute defined_in.
-
#name ⇒ Object
Returns the value of attribute name.
-
#source ⇒ Object
Returns the value of attribute source.
-
#type ⇒ Object
Returns the value of attribute type.
Instance Method Summary collapse
- #default ⇒ Object
- #default? ⇒ return_type
- #get(instance) ⇒ return_type
-
#initialize(defined_in, name, type: t.any, default: NRSER::NO_ARG, source: nil) ⇒ Prop
constructor
A new instance of Prop.
- #instance_variable_source? ⇒ return_type
- #primary? ⇒ return_type
- #set(instance, value) ⇒ return_type
- #set_from_values_hash(instance, **values) ⇒ return_type
- #source? ⇒ return_type
- #to_data(instance) ⇒ return_type
Constructor Details
#initialize(defined_in, name, type: t.any, default: NRSER::NO_ARG, source: nil) ⇒ Prop
Returns a new instance of Prop.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/nrser/meta/props/prop.rb', line 19 def initialize defined_in, name, type: t.any, default: NRSER::NO_ARG, source: nil @defined_in = defined_in @name = name @type = t.make type @source = source @default = default if @source.nil? @instance_variable_source = false else source_str = source.to_s @instance_variable_source = source_str[0] == '@' end end |
Instance Attribute Details
#defined_in ⇒ Object
Returns the value of attribute defined_in.
13 14 15 |
# File 'lib/nrser/meta/props/prop.rb', line 13 def defined_in @defined_in end |
#name ⇒ Object
Returns the value of attribute name.
13 14 15 |
# File 'lib/nrser/meta/props/prop.rb', line 13 def name @name end |
#source ⇒ Object
Returns the value of attribute source.
13 14 15 |
# File 'lib/nrser/meta/props/prop.rb', line 13 def source @source end |
#type ⇒ Object
Returns the value of attribute type.
13 14 15 |
# File 'lib/nrser/meta/props/prop.rb', line 13 def type @type end |
Instance Method Details
#default ⇒ Object
53 54 55 56 57 58 59 60 61 |
# File 'lib/nrser/meta/props/prop.rb', line 53 def default if default? @default else raise NameError.new NRSER.squish <<-END Prop #{ self } has no default value. END end end |
#default? ⇒ return_type
Document default? method.
Returns @todo Document return value.
48 49 50 |
# File 'lib/nrser/meta/props/prop.rb', line 48 def default? @default != NRSER::NO_ARG end |
#get(instance) ⇒ return_type
Document get method.
Returns @todo Document return value.
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/nrser/meta/props/prop.rb', line 111 def get instance if source? if instance_variable_source? instance.instance_variable_get source else instance.send source end else values(instance)[name] end end |
#instance_variable_source? ⇒ return_type
Document instance_variable_source? method.
Returns @todo Document return value.
85 86 87 |
# File 'lib/nrser/meta/props/prop.rb', line 85 def instance_variable_source? @instance_variable_source end |
#primary? ⇒ return_type
Document primary? method.
Returns @todo Document return value.
98 99 100 |
# File 'lib/nrser/meta/props/prop.rb', line 98 def primary? !source? end |
#set(instance, value) ⇒ return_type
Document set method.
Returns @todo Document return value.
132 133 134 135 136 137 138 139 140 141 |
# File 'lib/nrser/meta/props/prop.rb', line 132 def set instance, value unless type.test value raise TypeError.new NRSER.squish <<-END #{ defined_in }##{ name } must be of type #{ type }; found #{ value.inspect } END end values(instance)[name] = value end |
#set_from_values_hash(instance, **values) ⇒ return_type
Document set_from_hash method.
Returns @todo Document return value.
153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/nrser/meta/props/prop.rb', line 153 def set_from_values_hash instance, **values if values.key? name set instance, values[name] else if default? set instance, default.dup else raise TypeError.new NRSER.squish <<-END Prop #{ name } has no default value and no value was provided in values #{ values.inspect }. END end end end |
#source? ⇒ return_type
Document source? method.
Returns @todo Document return value.
72 73 74 |
# File 'lib/nrser/meta/props/prop.rb', line 72 def source? !@source.nil? end |
#to_data(instance) ⇒ return_type
Document to_data method.
Returns @todo Document return value.
178 179 180 181 182 183 184 185 186 |
# File 'lib/nrser/meta/props/prop.rb', line 178 def to_data instance value = get instance if value.respond_to? :to_data value.to_data else value end end |