lib/json-schema/validator.rb in json-schema-1.1.1 vs lib/json-schema/validator.rb in json-schema-1.2.0

- old
+ new

@@ -18,21 +18,21 @@ @sub_errors = [] @failed_attribute = failed_attribute message = "#{message} in schema #{schema.uri}" super(message) end - + def to_string if @sub_errors.empty? message else full_message = message + "\n The schema specific errors were:\n" @sub_errors.each{|e| full_message = full_message + " - " + e.to_string + "\n"} full_message end end - + def to_hash base = {:schema => @schema.uri, :fragment => ::JSON::Schema::Attribute.build_fragment(fragments), :message => message, :failed_attribute => @failed_attribute.to_s.split(":").last.split("Attribute").first} if !@sub_errors.empty? base[:errors] = @sub_errors.map{|e| e.to_hash} end @@ -60,11 +60,11 @@ processor.validation_error(error) else raise error end end - + def self.validation_errors(validator) validator.validation_errors end end @@ -109,19 +109,20 @@ :list => false, :version => nil, :validate_schema => false, :record_errors => false, :errors_as_objects => false, - :insert_defaults => false + :insert_defaults => false, + :strict => false } @@validators = {} @@default_validator = nil @@available_json_backends = [] @@json_backend = nil @@serializer = nil @@mutex = Mutex.new - + def self.version_string_for(version) # I'm not a fan of this, but it's quick and dirty to get it working for now return "draft-03" unless version case version.to_s when "draft3" @@ -152,21 +153,22 @@ @options[:version] = validator end @validation_options = @options[:record_errors] ? {:record_errors => true} : {} @validation_options[:insert_defaults] = true if @options[:insert_defaults] - + @validation_options[:strict] = true if @options[:strict] == true + # validate the schema, if requested if @options[:validate_schema] begin meta_validator = JSON::Validator.new(self.class.metaschema_for(version_string), schema_data) meta_validator.validate rescue JSON::Schema::ValidationError, JSON::Schema::SchemaError raise $! end end - + @@mutex.synchronize { @base_schema = initialize_schema(schema_data) } @data = initialize_data(data) @@mutex.synchronize { build_schemas(@base_schema) } end @@ -293,11 +295,11 @@ end def validation_error(error) @errors.push(error) end - + def validation_errors @errors end @@ -392,11 +394,11 @@ MultiJson.respond_to?(:adapter) ? MultiJson.adapter : MultiJson.engine else @@json_backend end end - + def json_backend=(backend) if defined?(MultiJson) backend = backend == 'json' ? 'json_gem' : backend MultiJson.respond_to?(:use) ? MultiJson.use(backend) : MultiJson.engine = backend else @@ -423,11 +425,11 @@ else raise JSON::Schema::JsonParseError.new("No supported JSON parsers found. The following parsers are suported:\n * yajl-ruby\n * json") end end end - + if !defined?(MultiJson) if begin Gem::Specification::find_by_name('json') rescue Gem::LoadError false @@ -436,11 +438,11 @@ end require 'json' @@available_json_backends << 'json' @@json_backend = 'json' end - + # Try force-loading json for rubies > 1.9.2 begin require 'json' @@available_json_backends << 'json' @@json_backend = 'json' @@ -456,14 +458,14 @@ end require 'yajl' @@available_json_backends << 'yajl' @@json_backend = 'yajl' end - + if @@json_backend == 'yajl' @@serializer = lambda{|o| Yajl::Encoder.encode(o) } else - @@serializer = lambda{|o| Marshal.dump(o) } + @@serializer = lambda{|o| Marshal.dump(o) } end end end private