Class: Uniword::Validation::Validators::RelationshipValidator

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

Overview

Validates relationship integrity (targets exist, no broken refs).

Responsibility: Validate relationship files and targets. Single Responsibility: Only validates relationships.

This is Layer 5 validation - validates that all relationship files are valid and their targets exist.

Checks:

  • Relationship files are well-formed

  • Relationship targets exist

  • Relationship types are valid

Examples:

Validate relationships

validator = RelationshipValidator.new(config)
result = validator.validate('/path/to/document.docx')
puts result.valid? # => true

Constant Summary collapse

RELATIONSHIP_NAMESPACE =
"http://schemas.openxmlformats.org/package/2006/relationships"

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



30
31
32
# File 'lib/uniword/validation/validators/relationship_validator.rb', line 30

def layer_name
  "Relationships"
end

#validate(path) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/uniword/validation/validators/relationship_validator.rb', line 34

def validate(path)
  result = LayerValidationResult.new(layer_name)

  Zip::File.open(path) do |zip|
    validate_relationships(zip, result)
  end

  result
rescue Zip::Error => e
  result.add_error(
    "Cannot open ZIP file: #{e.message}",
    critical: true,
  )
  result
end