Class: ROM::Header::Attribute
- Inherits:
-
Object
- Object
- ROM::Header::Attribute
- Defined in:
- lib/rom/header/attribute.rb
Overview
An attribute provides information about a specific attribute in a tuple
This may include information about how an attribute should be renamed, or how its value should coerced.
More complex attributes describe how an attribute should be transformed.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#key ⇒ Symbol
readonly
private
Key of an attribute that corresponds to tuple attribute.
-
#meta ⇒ Hash
readonly
private
Additional meta information.
-
#name ⇒ Symbol
readonly
private
Name of an attribute.
-
#type ⇒ Symbol
readonly
private
Type identifier (defaults to :object).
Class Method Summary collapse
-
.[](meta) ⇒ Class
private
Return attribute class for a given meta hash.
-
.coerce(input) ⇒ Attribute
private
Coerce an array with attribute meta-data into an attribute object.
Instance Method Summary collapse
-
#aliased? ⇒ Boolean
private
Return if an attribute should be aliased.
-
#initialize(name, meta) ⇒ Attribute
constructor
private
A new instance of Attribute.
-
#mapping ⇒ Hash
private
Return :key-to-:name mapping hash.
-
#typed? ⇒ Boolean
private
Return if an attribute has a specific type identifier.
- #union? ⇒ Boolean
Constructor Details
#initialize(name, meta) ⇒ Attribute
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.
Returns a new instance of Attribute.
69 70 71 72 73 74 |
# File 'lib/rom/header/attribute.rb', line 69 def initialize(name, ) @name = name @meta = @key = .fetch(:from) { name } @type = .fetch(:type) end |
Instance Attribute Details
#key ⇒ Symbol (readonly)
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.
Returns key of an attribute that corresponds to tuple attribute.
26 27 28 |
# File 'lib/rom/header/attribute.rb', line 26 def key @key end |
#meta ⇒ Hash (readonly)
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.
Returns additional meta information.
36 37 38 |
# File 'lib/rom/header/attribute.rb', line 36 def @meta end |
#name ⇒ Symbol (readonly)
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.
Returns name of an attribute.
21 22 23 |
# File 'lib/rom/header/attribute.rb', line 21 def name @name end |
#type ⇒ Symbol (readonly)
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.
Returns type identifier (defaults to :object).
31 32 33 |
# File 'lib/rom/header/attribute.rb', line 31 def type @type end |
Class Method Details
.[](meta) ⇒ Class
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.
Return attribute class for a given meta hash
45 46 47 48 |
# File 'lib/rom/header/attribute.rb', line 45 def self.[]() key = (.keys & TYPE_MAP.keys).first TYPE_MAP.fetch(key || [:type], self) end |
.coerce(input) ⇒ Attribute
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.
Coerce an array with attribute meta-data into an attribute object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/rom/header/attribute.rb', line 57 def self.coerce(input) name = input[0] = (input[1] || {}).dup [:type] ||= :object [:header] = Header.coerce([:header], model: [:model]) if .key?(:header) self[].new(name, ) end |
Instance Method Details
#aliased? ⇒ Boolean
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.
Return if an attribute should be aliased
86 87 88 |
# File 'lib/rom/header/attribute.rb', line 86 def aliased? key != name end |
#mapping ⇒ Hash
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.
Return :key-to-:name mapping hash
95 96 97 |
# File 'lib/rom/header/attribute.rb', line 95 def mapping {key => name} end |
#typed? ⇒ Boolean
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.
Return if an attribute has a specific type identifier
79 80 81 |
# File 'lib/rom/header/attribute.rb', line 79 def typed? type != :object end |
#union? ⇒ Boolean
99 100 101 |
# File 'lib/rom/header/attribute.rb', line 99 def union? key.is_a? ::Array end |