Sha256: 5ec95cc870e5cdece2cae0747aee880168ef7baf71a17a62d6f3ba2c114e209e

Contents?: true

Size: 836 Bytes

Versions: 4

Compression:

Stored size: 836 Bytes

Contents

class Typero::ArrayType < Typero::Type
  def default
    []
  end

  def set
    unless @value.class.to_s.index('Array')
      @value = @value.to_s.sub(/^\{/,'').sub(/\}$/,'').split(/\s*,\s*/)
    end

    @value.uniq!
    @value.compact!

    if type = @opts[:array_type]
      @value.map! { |el|
        Typero.validate(el, type) { |msg|
          raise TypeError.new "'%s' %s (value in list)" % [el, msg]
        }
      }
    end

    # this converts Sequel::Postgres::PGArray to Array and fixes many problems
    @value = @value.to_a if @value.class != Array
  end

  def validate
    raise TypeError, 'Min array lenght is %s elements' % @opts[:min] if @opts[:min] && @value.length < @opts[:min]
    raise TypeError, 'Max array lenght is %s elements' % @opts[:max] if @opts[:max] && @value.length > @opts[:max]
    true
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
typero-0.3.6 ./lib/typero/type/array.rb
typero-0.3.4 ./lib/typero/type/array.rb
typero-0.3.2 ./lib/typero/type/array.rb
typero-0.3.0 ./lib/typero/type/array.rb