Class: Dcc::Validate::Schematron::Rules::InfluenceConditionsPlacement

Inherits:
Base show all
Defined in:
lib/dcc/validate/schematron/rules/influence_conditions_placement.rb

Overview

dcc:influenceConditions must appear somewhere (global, list, or quantity level). Error if missing.

Instance Method Summary collapse

Methods inherited from Dcc::Validate::Schematron::Rule

#code, #severity

Instance Method Details

#check_on(dcc) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/dcc/validate/schematron/rules/influence_conditions_placement.rb', line 11

def check_on(dcc)
  return [] unless Dcc::TypeGuards.has_attribute?(dcc, :measurement_results)

  mr_list = safe_attr(dcc.measurement_results, :measurement_result)
  return [] if mr_list.empty?

  any_present = mr_list.any? do |mr|
    next false unless Dcc::TypeGuards.has_attribute?(mr, :influence_conditions)
    next true unless mr.influence_conditions.nil?

    Dcc::TypeGuards.has_attribute?(mr, :results) && mr.results &&
      has_in_descendants?(mr.results)
  end

  any_present ? [] : [
    issue(
      severity: :error,
      message: "dcc:influenceConditions is missing everywhere",
    ),
  ]
end