Class: Uniword::Validation::Validators::DocumentSemanticsValidator

Inherits:
LayerValidator
  • Object
show all
Defined in:
lib/uniword/validation/validators/document_semantics_validator.rb

Overview

Validates document semantic structure using extensible rules.

Uses the Rules::Registry to discover and apply validation rules. Users can register custom rules via Rules::Registry.register(MyRule).

This is Layer 7 validation — validates cross-part references, content integrity, and structural consistency.

Examples:

Validate with default rules

validator = DocumentSemanticsValidator.new
result = validator.validate('document.docx')

Constant Summary collapse

WORDML_NAMESPACE =
"http://schemas.openxmlformats.org/wordprocessingml/2006/main"

Instance Attribute Summary

Attributes inherited from LayerValidator

#config

Instance Method Summary collapse

Methods inherited from LayerValidator

#enabled?, #initialize

Constructor Details

This class inherits a constructor from Uniword::Validation::LayerValidator

Instance Method Details

#layer_nameObject



26
27
28
# File 'lib/uniword/validation/validators/document_semantics_validator.rb', line 26

def layer_name
  "Document Semantics"
end

#validate(path) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/uniword/validation/validators/document_semantics_validator.rb', line 30

def validate(path)
  issues = []

  context = Rules::DocumentContext.new(path)
  begin
    rules = Rules::Registry.all
    rules.each do |rule|
      next unless rule.applicable?(context)

      issues.concat(rule.check(context))
    end
  ensure
    context.close
  end

  build_result(issues)
rescue StandardError => e
  issues << Report::ValidationIssue.new(
    severity: "error",
    code: "DOC-000",
    message: "Semantic validation failed: #{e.message}",
  )
  build_result(issues)
end