Class: Chemicalml::Convention::UnitDictionary::Constraints::UnitMustHaveMultiplierOrConstantToSi

Inherits:
Constraint::NodeConstraint
  • Object
show all
Defined in:
lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_multiplier_or_constant_to_si.rb

Overview

A <unit> element MUST have at least one of multiplierToSI or constantToSI — to define the conversion to the parent SI unit. Per the unit-dictionary convention spec.

Instance Method Summary collapse

Methods inherited from Constraint::NodeConstraint

#check

Instance Method Details

#check_node(node, _path) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_multiplier_or_constant_to_si.rb', line 14

def check_node(node, _path)
  has_multiplier = !node.multiplier_to_si.to_s.strip.empty?
  has_constant = !node.constant_to_si.to_s.strip.empty?
  return [] if has_multiplier || has_constant

  [violation(path: yield_path(node),
             message: "unit #{node.id.inspect} must have at least one of " \
                      'multiplierToSI or constantToSI to convert to parent SI')]
end