Class: JsonStructure::SchemaValidator
- Inherits:
-
Object
- Object
- JsonStructure::SchemaValidator
- Defined in:
- lib/jsonstructure/schema_validator.rb
Overview
Validates JSON Structure schema documents
This class is thread-safe. Multiple threads can call validate concurrently.
Constant Summary collapse
- UCUM_NUMERIC_TYPES =
%w[number integer float double decimal int32 uint32 int64 uint64 int128 uint128].freeze
- ENUM_NUMERIC_TYPES =
%w[integer int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double decimal].freeze
- RELATION_CONTAINER_TYPES =
%w[object tuple].freeze
- IDENTIFIER_PATTERN =
/\A[A-Za-z_$][A-Za-z0-9_$]*\z/- URI_SCHEME_PATTERN =
/\A[a-zA-Z][a-zA-Z0-9+\-.]*:/- VALIDATION_KEYWORDS =
%w[ pattern format minLength maxLength minimum maximum exclusiveMinimum exclusiveMaximum multipleOf minItems maxItems uniqueItems contains minContains maxContains minProperties maxProperties propertyNames patternProperties dependentRequired minEntries maxEntries patternKeys keyNames contentEncoding contentMediaType has default ].freeze
- UNITS_KEYWORDS =
%w[unit currency symbols].freeze
Class Method Summary collapse
-
.validate(schema_json) ⇒ ValidationResult
This method is thread-safe and can be called from multiple threads concurrently.
-
.validate!(schema_json) ⇒ ValidationResult
Validate a schema string, raising an exception on failure.
Class Method Details
.validate(schema_json) ⇒ ValidationResult
This method is thread-safe and can be called from multiple threads concurrently.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/jsonstructure/schema_validator.rb', line 40 def validate(schema_json) raise ArgumentError, 'schema_json must be a String' unless schema_json.is_a?(String) JsonStructure.validation_started begin result_ptr = ::FFI::MemoryPointer.new(FFI::JSResult.size) FFI.js_result_init(result_ptr) FFI.js_validate_schema(schema_json, result_ptr) base_result = ValidationResult.from_ffi(result_ptr) augment_extension_validation(base_result, schema_json) ensure JsonStructure.validation_completed end end |
.validate!(schema_json) ⇒ ValidationResult
Validate a schema string, raising an exception on failure
69 70 71 72 73 74 |
# File 'lib/jsonstructure/schema_validator.rb', line 69 def validate!(schema_json) result = validate(schema_json) raise SchemaValidationError.new(result) unless result.valid? result end |