parrish/json-schema_builder

View on GitHub
lib/json/schema_builder.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'active_support'
require 'active_support/core_ext'
require 'json/schema_builder/dsl'
require 'json/schema_builder/version'
require 'json/schema_builder/configuration'

%w(any array boolean integer null number object string).each do |type|
  require "json/schema_builder/#{ type }"
end

module JSON
  module SchemaBuilder
    extend ActiveSupport::Concern
    include DSL
    extend JSON::SchemaBuilder::Configuration

    included do |klass|
      include Helpers
      extend JSON::SchemaBuilder::Configuration
      class << self
        attr_accessor :root_key
      end
    end

    def self.default_options
      @options || { }
    end

    def initialize(context = { })
      context.each_pair do |key, value|
        instance_variable_set "@#{ key }", value
      end
    end

    def root(key = nil, &block)
      root_key = key || self.class.root_key.to_sym
      object do
        object root_key, required: true, &block
      end
    end

    module ClassMethods
      def root(key)
        @root_key = key
      end
    end
  end
end