Class: Chemicalml::Convention::Molecular::Constraints::BondIdShouldMatchPattern

Inherits:
Constraint::NodeConstraint show all
Includes:
Chemicalml::Cml::Patterns
Defined in:
lib/chemicalml/convention/molecular/constraints/bond_id_should_match_pattern.rb

Overview

A <bond>'s id attribute SHOULD match the XSD idType pattern (letter start, alphanumeric body with dots/dashes). Warning severity.

Constant Summary

Constants included from Chemicalml::Cml::Patterns

Chemicalml::Cml::Patterns::ATOM_ID_PATTERN, Chemicalml::Cml::Patterns::BOND_REF_PATTERN, Chemicalml::Cml::Patterns::DELIMITER_PATTERN, Chemicalml::Cml::Patterns::DICTIONARY_PREFIX_PATTERN, Chemicalml::Cml::Patterns::FORMULA_PATTERN, Chemicalml::Cml::Patterns::HEAD_PATTERN, Chemicalml::Cml::Patterns::ID_PATTERN, Chemicalml::Cml::Patterns::ISOTOPIC_SPIN_PATTERN, Chemicalml::Cml::Patterns::MOLECULE_ID_PATTERN, Chemicalml::Cml::Patterns::NAMESPACE_PATTERN, Chemicalml::Cml::Patterns::NAMESPACE_REF_PATTERN, Chemicalml::Cml::Patterns::REF_PATTERN, Chemicalml::Cml::Patterns::REPEAT_PATTERN, Chemicalml::Cml::Patterns::TAIL_PATTERN, Chemicalml::Cml::Patterns::VERSION_PATTERN

Instance Method Summary collapse

Methods inherited from Constraint::NodeConstraint

#check

Instance Method Details

#check_node(node, _path) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/chemicalml/convention/molecular/constraints/bond_id_should_match_pattern.rb', line 16

def check_node(node, _path)
  id = node.id.to_s
  return [] if id.empty?
  return [] if id.match?(/\A#{ID_PATTERN.source}\z/)

  [violation(path: yield_path(node),
             message: "bond id #{id.inspect} should match the idType pattern " \
                      '(letter start, alphanumeric body with . and -)',
             severity: :warning,
             value: id)]
end