Sha256: 6fe001a464bf151a18949d31b2c2a6191d2f20b8c815c93bd9f4ec902455bfa7

Contents?: true

Size: 829 Bytes

Versions: 4

Compression:

Stored size: 829 Bytes

Contents

require_relative 'entity'

module JSON
  module SchemaBuilder
    class Object < Entity
      register :object
      attribute :required
      attribute :min_properties
      attribute :max_properties
      attribute :properties
      attribute :additional_properties
      attribute :pattern_properties

      def initialize(name, opts = { }, &block)
        self.properties = { }
        super
        children.each do |child|
          self.properties[child.name] = child.as_json
        end
      end

      def required(*values)
        case values
        when []
          @schema[:required]
        when [true]
          @parent.required ||= []
          @parent.required << @name
        else
          @schema[:required] = values.flatten
        end
      end
      alias_method :required=, :required
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
json-schema_builder-0.5.0 lib/json/schema_builder/object.rb
json-schema_builder-0.4.0 lib/json/schema_builder/object.rb
json-schema_builder-0.3.1 lib/json/schema_builder/object.rb
json-schema_builder-0.3.0 lib/json/schema_builder/object.rb