Class: Chemicalml::Convention::Compchem::Constraints::JobMustContainInitialization

Inherits:
Chemicalml::Convention::Constraint::NodeConstraint show all
Defined in:
lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb

Overview

A job module MUST contain exactly one initialization module child per the compchem convention.

Instance Method Summary collapse

Methods inherited from Chemicalml::Convention::Constraint::NodeConstraint

#check

Instance Method Details

#check_node(node, path) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb', line 10

def check_node(node, path)
  return [] unless job_module?(node)

  modules = node.modules || []
  inits = modules.select { |m| m.dict_ref == "compchem:initialization" }
  return [] if inits.length == 1

  message = if inits.empty?
              "job module must contain exactly one initialization module (found 0)"
            else
              "job module must contain exactly one initialization module (found #{inits.length})"
            end
  [violation(path: path.join("/"), message: message)]
end