Sha256: 679d9f5d86387ac07f8b093fe5dcfd703818407bd1b3d618174802f2cc1d61d2
Contents?: true
Size: 1.11 KB
Versions: 4
Compression:
Stored size: 1.11 KB
Contents
module Jimmy class SchemaTypes::Object < SchemaType register! trait :require do |*required_keys| if required_keys == [0] attrs[:required] = SymbolArray.new else attrs[:required] ||= SymbolArray.new attrs[:required] |= required_keys.flatten.map(&:to_s).uniq end end trait :all do SymbolArray.new(attrs[:properties].keys.select { |x| x.is_a? Symbol }) end trait(:none) { 0 } trait(:allow_additional) { attrs[:additional_properties] = true } nested do |schema, property_name| (attrs[:properties] ||= {})[property_name] = schema end compile do |hash| (attrs[:properties] || {}).each do |key, value| collection, key = if key.is_a? Regexp ['patternProperties', key.inspect.gsub(%r`^/|/[a-z]*$`, '')] else ['properties', key.to_s] end hash[collection] ||= {} hash[collection][key] = value.compile end hash['required'] = (attrs[:required] || []).to_a hash['additionalProperties'] = !!attrs[:additional_properties] end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
jimmy-0.3.3 | lib/jimmy/schema_types/object.rb |
jimmy-0.3.2 | lib/jimmy/schema_types/object.rb |
jimmy-0.3.1 | lib/jimmy/schema_types/object.rb |
jimmy-0.3 | lib/jimmy/schema_types/object.rb |