Class: Dcc::Validate::Schematron::Profile

Inherits:
Object
  • Object
show all
Defined in:
lib/dcc/validate/schematron/profile.rb

Overview

Dcc::Validate::Schematron::Profile aggregates the 14 PTB Schematron rules and runs them against a parsed DCC object tree. Each rule is a Lutaml::Model::Validation::Rule subclass that walks the parsed tree.

Examples:

result = Dcc::Validate::Schematron.call(dcc)
result.ok?           # => true
result.issues.size   # => 0

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dcc) ⇒ Profile

Returns a new instance of Profile.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/dcc/validate/schematron/profile.rb', line 20

def initialize(dcc)
  @dcc = dcc
  @rules = [
    Rules::UsedMethodsPlacement,
    Rules::UsedSoftwarePlacement,
    Rules::InfluenceConditionsPlacement,
    Rules::SchemaVersionCheck,
    Rules::IdRefIdLinking,
    Rules::IsoCodeValidation,
    Rules::DateRangeCheck,
    Rules::ReleaseFormatCheck,
    Rules::UncertaintyConsistency,
    Rules::UnitFormatCheck,
    Rules::NonSiDeclaration,
    Rules::LanguageCodeDedup,
    Rules::XmlListSpacing,
  ]
end

Instance Attribute Details

#dccObject (readonly)

Returns the value of attribute dcc.



18
19
20
# File 'lib/dcc/validate/schematron/profile.rb', line 18

def dcc
  @dcc
end

#rulesObject (readonly)

Returns the value of attribute rules.



18
19
20
# File 'lib/dcc/validate/schematron/profile.rb', line 18

def rules
  @rules
end

Class Method Details

.call(dcc) ⇒ Dcc::Validate::Result

Convenience class method.

Parameters:

  • dcc (Lutaml::Model::Serializable)

Returns:



57
58
59
# File 'lib/dcc/validate/schematron/profile.rb', line 57

def call(dcc)
  new(dcc).call
end

Instance Method Details

#callObject

Run all rules and return a Dcc::Validate::Result.



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/dcc/validate/schematron/profile.rb', line 40

def call
  issues = []
  rules.each do |rule_class|
    issues.concat(rule_class.new.check_on(dcc))
  end

  ::Dcc::Validate::Result.new(
    issues: issues,
    schema_version: Dcc::TypeGuards.has_attribute?(dcc, :schema_version) ? dcc.schema_version.to_s : nil,
    source: "schematron",
  )
end