Sha256: 91e23aac222ba955070152044a0d7c863e7687a30d00a12bfae44dbc1414a01c

Contents?: true

Size: 890 Bytes

Versions: 3

Compression:

Stored size: 890 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_children
        self.properties = { }
        children.select(&:name).each do |child|
          self.properties[child.name] = child.as_json
        end
      end

      def extract_types
        initialize_children
        super
      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

3 entries across 3 versions & 1 rubygems

Version Path
json-schema_builder-0.7.0 lib/json/schema_builder/object.rb
json-schema_builder-0.6.1 lib/json/schema_builder/object.rb
json-schema_builder-0.6.0 lib/json/schema_builder/object.rb