lib/jsi/validation/result.rb in jsi-0.7.0 vs lib/jsi/validation/result.rb in jsi-0.8.0
- old
+ new
@@ -1,14 +1,11 @@
# frozen_string_literal: true
module JSI
module Validation
# a result of validating an instance against schemas which describe it.
- # virtual base class.
class Result
- include Util::Virtual
-
Builder = Util::AttrStruct[*%w(
result
schema
instance_ptr
instance_document
@@ -22,11 +19,10 @@
def instance
instance_ptr.evaluate(instance_document)
end
def schema_issue(*_)
- virtual_method
end
def schema_error(message, keyword = nil)
schema_issue(:error, message, keyword)
end
@@ -46,16 +42,16 @@
)
merge_schema_issues(subresult)
subresult
end
+ # @param instance_child_token [String, Integer]
# @param subschema_ptr [JSI::Ptr, #to_ary]
- # @param subinstance_ptr [JSI::Ptr, #to_ary]
# @return [JSI::Validation::Result]
- def child_subschema_validate(subschema_ptr, subinstance_ptr)
+ def child_subschema_validate(instance_child_token, subschema_ptr)
subresult = schema.subschema(subschema_ptr).internal_validate_instance(
- instance_ptr + subinstance_ptr,
+ instance_ptr[instance_child_token],
instance_document,
validate_only: validate_only,
)
merge_schema_issues(subresult)
subresult
@@ -69,28 +65,17 @@
result.schema_issues.merge(other_result.schema_issues)
end
nil
end
end
+ end
- def builder(schema, instance_ptr, instance_document, validate_only, visited_refs)
- self.class::Builder.new(
- result: self,
- schema: schema,
- instance_ptr: instance_ptr,
- instance_document: instance_document,
- validate_only: validate_only,
- visited_refs: visited_refs,
- )
- end
-
+ class Result
# is the instance valid against its schemas?
# @return [Boolean]
def valid?
- # :nocov:
- virtual_method
- # :nocov:
+ #chkbug raise(NotImplementedError)
end
include Util::FingerprintHash
end
@@ -100,11 +85,11 @@
class Builder < Result::Builder
def validate(
valid,
message,
keyword: nil,
- results: []
+ results: Util::EMPTY_ARY
)
results.each { |res| result.schema_issues.merge(res.schema_issues) }
if !valid
results.each { |res| result.validation_errors.merge(res.validation_errors) }
result.validation_errors << Validation::Error.new({
@@ -124,11 +109,13 @@
keyword: keyword,
schema: schema,
})
end
end
+ end
+ class FullResult
def initialize
@validation_errors = Set.new
@schema_issues = Set.new
end
@@ -138,11 +125,10 @@
def valid?
validation_errors.empty?
end
def freeze
- @validation_errors.each(&:freeze)
@schema_issues.each(&:freeze)
@validation_errors.freeze
@schema_issues.freeze
super
end
@@ -154,21 +140,18 @@
validation_errors.merge(result.validation_errors)
schema_issues.merge(result.schema_issues)
self
end
- def +(result)
- FullResult.new.merge(self).merge(result)
- end
-
- # @private
+ # see {Util::Private::FingerprintHash}
+ # @api private
def jsi_fingerprint
{
class: self.class,
validation_errors: validation_errors,
schema_issues: schema_issues,
- }
+ }.freeze
end
end
# a result indicating only whether an instance is valid against its schemas
class ValidityResult < Result
@@ -176,35 +159,38 @@
class Builder < Result::Builder
def validate(
valid,
message,
keyword: nil,
- results: []
+ results: Util::EMPTY_ARY
)
if !valid
throw(:jsi_validation_result, INVALID)
end
end
def schema_issue(*_)
# noop
end
end
+ end
+ class ValidityResult
def initialize(valid)
@valid = valid
end
def valid?
@valid
end
- # @private
+ # see {Util::Private::FingerprintHash}
+ # @api private
def jsi_fingerprint
{
class: self.class,
valid: valid?,
- }
+ }.freeze
end
end
end
end