Class: Eco::Data::Mapper
- Inherits:
-
Object
- Object
- Eco::Data::Mapper
- Defined in:
- lib/eco/data/mapper.rb
Instance Method Summary collapse
- #external?(value) ⇒ Boolean
- #include?(value) ⇒ Boolean
-
#initialize(array_of_arrays = [], internal: :last) ⇒ Mapper
constructor
it expects [[v1a, v1b], [v2a, v2b] ...].
- #internal?(value) ⇒ Boolean
- #list(type = :internal) ⇒ Object
- #to_external(value) ⇒ Object
- #to_internal(value) ⇒ Object
Constructor Details
#initialize(array_of_arrays = [], internal: :last) ⇒ Mapper
it expects [[v1a, v1b], [v2a, v2b] ...]
6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/eco/data/mapper.rb', line 6 def initialize (array_of_arrays = [], internal: :last) @source = array_of_arrays if @source # internal should be always last in @source @source = @source.map { |a| a.reverse } unless internal == :last # first declarations take priority @by_external = @source.reverse.to_h @by_internal = @source.reverse.map do |pair| pair.reverse end.to_h end end |
Instance Method Details
#external?(value) ⇒ Boolean
33 34 35 36 |
# File 'lib/eco/data/mapper.rb', line 33 def external?(value) return true if !@source @by_external.key?(value) end |
#include?(value) ⇒ Boolean
38 39 40 41 |
# File 'lib/eco/data/mapper.rb', line 38 def include?(value) return true if !@source internal?(value) || external?(value) end |
#internal?(value) ⇒ Boolean
28 29 30 31 |
# File 'lib/eco/data/mapper.rb', line 28 def internal?(value) return true if !@source @by_internal.key?(value) end |
#list(type = :internal) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/eco/data/mapper.rb', line 21 def list(type = :internal) return [] if !@source @source.map do |pair| type == :internal ? pair.last : pair.first end.uniq end |
#to_external(value) ⇒ Object
48 49 50 51 |
# File 'lib/eco/data/mapper.rb', line 48 def to_external(value) return value if !@source @by_internal[value] end |
#to_internal(value) ⇒ Object
43 44 45 46 |
# File 'lib/eco/data/mapper.rb', line 43 def to_internal(value) return value if !@source @by_external[value] end |