Sha256: 7e797e0a0252c6f4820b52953542c9d5ff4cef89cf10bfdc895c41e1f00e4dfe

Contents?: true

Size: 669 Bytes

Versions: 9

Compression:

Stored size: 669 Bytes

Contents

module Jimmy
  class SchemaTypes::Array < SchemaType
    register!

    trait :min_items
    trait :max_items
    trait Range do |range|
      min, max = [range.first, range.last].sort
      min_items min
      max_items max
    end
    trait(Fixnum) { |value| min_items value; max_items value }

    nested do |schema|
      (attrs[:items] ||= []) << schema
    end

    compile do |hash|
      hash.merge! camelize_attrs(%i[min_items max_items])
      items = attrs[:items] || []
      if items.length > 1
        hash['items'] = {'anyOf' => items.map(&:compile)}
      elsif items.length == 1
        hash['items'] = items.first.compile
      end
    end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
jimmy-0.4.3 lib/jimmy/schema_types/array.rb
jimmy-0.4.2 lib/jimmy/schema_types/array.rb
jimmy-0.4.1 lib/jimmy/schema_types/array.rb
jimmy-0.4 lib/jimmy/schema_types/array.rb
jimmy-0.3.4 lib/jimmy/schema_types/array.rb
jimmy-0.3.3 lib/jimmy/schema_types/array.rb
jimmy-0.3.2 lib/jimmy/schema_types/array.rb
jimmy-0.3.1 lib/jimmy/schema_types/array.rb
jimmy-0.3 lib/jimmy/schema_types/array.rb