Sha256: 2bdaef16a2248ccbd3e176edfac3244c4cc59486ef0b9782f32bc18d253f838a

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

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|
          case child.name
          when Regexp
            self.pattern_properties ||= { }
            self.pattern_properties[child.name.source] = child.as_json
          else
            self.properties[child.name] = child.as_json
          end
        end
      end

      def extract_types
        initialize_children
        super
      end

      def reinitialize
        return unless initialized?
        extract_types
      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.8.2 lib/json/schema_builder/object.rb
json-schema_builder-0.8.1 lib/json/schema_builder/object.rb
json-schema_builder-0.8.0 lib/json/schema_builder/object.rb