Sha256: c124302c755fbe47feaf94d85be9026e3a160e80e8d051d6ec5da480790b8f01

Contents?: true

Size: 1.89 KB

Versions: 4

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

class ReeMapper::Array < ReeMapper::AbstractType
  attr_reader :of

  contract ReeMapper::Field => Any
  def initialize(of)
    @of = of
  end

  contract(Any, Kwargs[name: String, role: Nilor[Symbol, ArrayOf[Symbol]]] => Array).throws(ReeMapper::TypeError)
  def serialize(value, name:, role: nil)
    if value.is_a?(Array)
      value.map.with_index {
        if _1.nil? && of.null
          _1
        else
          of.type.serialize(_1, name: "#{name}[#{_2}]", role: role)
        end
      }
    else
      raise ReeMapper::TypeError, "`#{name}` should be an array"
    end
  end

  contract(Any, Kwargs[name: String, role: Nilor[Symbol, ArrayOf[Symbol]]] => Array).throws(ReeMapper::TypeError)
  def cast(value, name:, role: nil)
    if value.is_a?(Array)
      value.map.with_index {
        if _1.nil? && of.null
          _1
        else
          of.type.cast(_1, name: "#{name}[#{_2}]", role: role)
        end
      }
    else
      raise ReeMapper::TypeError, "`#{name}` should be an array"
    end
  end

  contract(Any, Kwargs[name: String, role: Nilor[Symbol, ArrayOf[Symbol]]] => Array).throws(ReeMapper::TypeError)
  def db_dump(value, name:, role: nil)
    if value.is_a?(Array)
      value.map.with_index {
        if _1.nil? && of.null
          _1
        else
          of.type.db_dump(_1, name: "#{name}[#{_2}]", role: role)
        end
      }
    else
      raise ReeMapper::TypeError, "`#{name}` should be an array"
    end
  end

  contract(Any, Kwargs[name: String, role: Nilor[Symbol, ArrayOf[Symbol]]] => Array).throws(ReeMapper::TypeError)
  def db_load(value, name:, role: nil)
    if value.is_a?(Array)
      value.map.with_index {
        if _1.nil? && of.null
          _1
        else
          of.type.db_load(_1, name: "#{name}[#{_2}]", role: role)
        end
      }
    else
      raise ReeMapper::TypeError, "`#{name}` should be an array"
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ree_lib-1.0.20 lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/array.rb
ree_lib-1.0.19 lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/array.rb
ree_lib-1.0.18 lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/array.rb
ree_lib-1.0.17 lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/array.rb