Sha256: becce4c54acbdeb5a6ded042dba02d9b0a953bb17b3ec362cdc751620bf6f1c9

Contents?: true

Size: 813 Bytes

Versions: 3

Compression:

Stored size: 813 Bytes

Contents

# encoding: utf-8

module Mixture
  module Coerce
    # Handles coercion of the Array class.
    class Array < Base
      type Types::Array

      coerce_to(Types::Object, Itself)
      coerce_to(Types::Boolean, :any?)

      coerce_to(Types::Array) do |value, type|
        member = type.options.fetch(:members).first
        value.map { |e| Coerce.perform(member, e) }
      end

      coerce_to(Types::Set) do |value, type|
        member = type.options.fetch(:members).first
        value.map { |e| Coerce.perform(member, e) }
      end

      coerce_to(Types::Hash) do |value, type|
        member = type.options.fetch(:members)
        ::Hash[value.map do |element|
          [Coerce.perform(member[0], element[0]),
           Coerce.perform(member[1], element[1])]
        end]
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mixture-0.6.2 lib/mixture/coerce/array.rb
mixture-0.6.1 lib/mixture/coerce/array.rb
mixture-0.6.0 lib/mixture/coerce/array.rb