Class: Opencdd::Validator::Rule
- Inherits:
-
Object
- Object
- Opencdd::Validator::Rule
- Defined in:
- lib/opencdd/validator/rule.rb
Overview
Deep base class for all validator rules. Owns shared guards that were previously copy-pasted across 12 rule subclasses:
- blank-value guard (skip empty cells unless +skip_blank?+
is overridden to false)
- code-column predicate
- reference-kind predicate
Subclasses implement value_passes? (the narrow check) and
optionally override applies? and message.
Direct Known Subclasses
ClassReferenceRule, ConditionRule, DataTypeRule, EnumRule, FormatRule, HierarchyRule, IrdiRule, MandatoryRule, PatternRule, ReferenceRule, SetRule, SynonymRule, TypeRule, UniquenessRule
Constant Summary collapse
- REFERENCE_VALUE_KINDS =
%i[identifier_ref set_of_refs class_ref].freeze
Instance Method Summary collapse
-
#applies?(context) ⇒ Boolean
Default: applies to every entity.
-
#blank?(value) ⇒ Boolean
── Shared predicates ───────────────────────────────────────.
-
#call(value, context) ⇒ Object
Template method: skip blank values (unless the subclass overrides
skip_blank?), then delegate tovalue_passes?. - #code_column?(context) ⇒ Boolean
- #id ⇒ Object
- #message(value, _context) ⇒ Object
- #reference_kind?(context) ⇒ Boolean
-
#skip_blank? ⇒ Boolean
Most rules skip empty values — MandatoryRule overrides to
falseso it can flag missing mandatory cells. -
#value_passes?(value, context) ⇒ Boolean
── Hooks for subclasses ────────────────────────────────────.
Instance Method Details
#applies?(context) ⇒ Boolean
Default: applies to every entity. Override to narrow.
23 24 25 |
# File 'lib/opencdd/validator/rule.rb', line 23 def applies?(context) true end |
#blank?(value) ⇒ Boolean
── Shared predicates ───────────────────────────────────────
50 51 52 |
# File 'lib/opencdd/validator/rule.rb', line 50 def blank?(value) value.nil? || value.to_s.strip.empty? end |
#call(value, context) ⇒ Object
Template method: skip blank values (unless the subclass
overrides skip_blank?), then delegate to value_passes?.
29 30 31 32 |
# File 'lib/opencdd/validator/rule.rb', line 29 def call(value, context) return true if skip_blank? && blank?(value) value_passes?(value, context) end |
#code_column?(context) ⇒ Boolean
54 55 56 57 58 |
# File 'lib/opencdd/validator/rule.rb', line 54 def code_column?(context) return false unless context.entity && context.entity. code_pid = Opencdd::MetaClasses.code_property_id_for(context.entity..code) context.column_iri == code_pid end |
#id ⇒ Object
18 19 20 |
# File 'lib/opencdd/validator/rule.rb', line 18 def id raise NotImplementedError end |
#message(value, _context) ⇒ Object
34 35 36 |
# File 'lib/opencdd/validator/rule.rb', line 34 def (value, _context) "#{id}: value #{value.inspect} is invalid" end |
#reference_kind?(context) ⇒ Boolean
60 61 62 |
# File 'lib/opencdd/validator/rule.rb', line 60 def reference_kind?(context) REFERENCE_VALUE_KINDS.include?(context.value_kind) end |
#skip_blank? ⇒ Boolean
Most rules skip empty values — MandatoryRule overrides to
false so it can flag missing mandatory cells.
45 46 47 |
# File 'lib/opencdd/validator/rule.rb', line 45 def skip_blank? true end |
#value_passes?(value, context) ⇒ Boolean
── Hooks for subclasses ────────────────────────────────────
39 40 41 |
# File 'lib/opencdd/validator/rule.rb', line 39 def value_passes?(value, context) raise NotImplementedError end |