class AMA::Entity::Mapper::Type::BuiltIn::SetType
Predefined type for Set class
Constants
- INSTANCE
Public Class Methods
new()
click to toggle source
Calls superclass method
AMA::Entity::Mapper::Type::new
# File lib/ama-entity-mapper/type/builtin/set_type.rb, line 16 def initialize super(::Set) attribute!(:_value, parameter!(:T), virtual: true) define_factory define_normalizer define_denormalizer define_enumerator define_injector end
Private Instance Methods
define_denormalizer()
click to toggle source
# File lib/ama-entity-mapper/type/builtin/set_type.rb, line 41 def define_denormalizer denormalizer_block do |data, type, context = nil, *| if data.is_a?(Hash) || !data.is_a?(Enumerable) message = "Can't denormalize Set from #{data.class}" type.mapping_error(message, context: context) end Set.new(data) end end
define_enumerator()
click to toggle source
# File lib/ama-entity-mapper/type/builtin/set_type.rb, line 51 def define_enumerator enumerator_block do |entity, type, *| ::Enumerator.new do |yielder| attribute = type.attributes[:_value] entity.each_with_index do |value, index| yielder << [attribute, value, Path::Segment.index(index)] end end end end
define_factory()
click to toggle source
# File lib/ama-entity-mapper/type/builtin/set_type.rb, line 29 def define_factory factory_block do |*| Set.new([]) end end
define_injector()
click to toggle source
# File lib/ama-entity-mapper/type/builtin/set_type.rb, line 62 def define_injector injector_block do |entity, _, _, value, *| entity.add(value) end end
define_normalizer()
click to toggle source
# File lib/ama-entity-mapper/type/builtin/set_type.rb, line 35 def define_normalizer normalizer_block do |input, *| input.map(&:itself) end end