class ReeMapper::MapperFactory
def array(field_name = nil, each: nil, optional: false, key: nil, **opts, &blk)
def array(field_name = nil, each: nil, optional: false, key: nil, **opts, &blk) raise ReeMapper::Error, "invalid DSL usage" unless @mapper raise ArgumentError, "array item can't be optional" if field_name.nil? && optional raise ArgumentError, 'array type should use either :each or :block' if each && blk || !each && !blk raise ArgumentError, 'invalid :key option value' unless HASH_KEY_OPTION_VALUES.include?(key) if blk each = ReeMapper::Field.new( hash_from_blk(key: key, &blk) ) end type = ReeMapper::Mapper.build(@mapper.strategies, ReeMapper::Array.new(each)) return ReeMapper::Field.new(type, optional: optional, **opts) unless field_name @mapper.add_field(type, field_name, optional: optional, **opts) end