Sha256: 8e62aad4b11397d516fc0692af1733fbdf711c2bde6b6097d61a4cbb4cda16fa

Contents?: true

Size: 1.05 KB

Versions: 22

Compression:

Stored size: 1.05 KB

Contents

module Jimmy
  class SchemaTypes::Number < SchemaType
    register!

    trait :multiple_of
    trait :minimum
    trait :maximum
    trait(:<) { |value| maximum value; attrs[:exclusive_maximum] = true; self }
    trait(:<=) { |value| maximum value; attrs[:exclusive_maximum] = nil; self }
    trait(:>) { |value| minimum value; attrs[:exclusive_minimum] = true; self }
    trait(:>=) { |value| minimum value; attrs[:exclusive_minimum] = nil; self }
    trait(:enum) do |*values|
      attrs[:enum] ||= []
      attrs[:enum] |= values.flatten
    end
    trait(Numeric, Array) { |value| enum value }
    trait(Range) do |range|
      if range.first <= range.last
        minimum range.first
        maximum range.last
        attrs[:exclusive_maximum] ||= range.exclude_end? || nil
      else
        minimum range.last
        maximum range.first
        attrs[:exclusive_minimum] ||= range.exclude_end? || nil
      end
    end

    compile do |hash|
      hash.merge! camelize_attrs(%i[minimum maximum exclusive_minimum exclusive_maximum multiple_of enum])
    end

  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
jimmy-0.5.5 lib/jimmy/schema_types/number.rb
jimmy-0.5.4 lib/jimmy/schema_types/number.rb
jimmy-0.5.3 lib/jimmy/schema_types/number.rb
jimmy-0.5.2 lib/jimmy/schema_types/number.rb
jimmy-0.5.1 lib/jimmy/schema_types/number.rb
jimmy-0.5.0 lib/jimmy/schema_types/number.rb
jimmy-0.4.8 lib/jimmy/schema_types/number.rb
jimmy-0.4.7 lib/jimmy/schema_types/number.rb
jimmy-0.4.6 lib/jimmy/schema_types/number.rb
jimmy-0.4.5 lib/jimmy/schema_types/number.rb
jimmy-0.4.4 lib/jimmy/schema_types/number.rb
jimmy-0.4.3 lib/jimmy/schema_types/number.rb
jimmy-0.4.2 lib/jimmy/schema_types/number.rb
jimmy-0.4.1 lib/jimmy/schema_types/number.rb
jimmy-0.4 lib/jimmy/schema_types/number.rb
jimmy-0.3.4 lib/jimmy/schema_types/number.rb
jimmy-0.3.3 lib/jimmy/schema_types/number.rb
jimmy-0.3.2 lib/jimmy/schema_types/number.rb
jimmy-0.3.1 lib/jimmy/schema_types/number.rb
jimmy-0.3 lib/jimmy/schema_types/number.rb