Class: Uniword::Validation::LinkValidator
- Inherits:
-
Object
- Object
- Uniword::Validation::LinkValidator
- Defined in:
- lib/uniword/validation/link_validator.rb
Overview
Main orchestrator for link validation.
Responsibility: Coordinate link validation across entire document. Single Responsibility: Link validation orchestration only.
The LinkValidator:
-
Loads configuration from external YAML
-
Initializes appropriate checkers
-
Finds all links in document
-
Routes each link to appropriate checker
-
Aggregates results into ValidationReport
Follows Open/Closed principle:
-
Adding new checker types requires no changes to this class
-
Checkers are configured externally
Instance Attribute Summary collapse
-
#checkers ⇒ Array<LinkChecker>
readonly
Registered checkers.
-
#config ⇒ Hash
readonly
Loaded configuration.
Instance Method Summary collapse
-
#initialize(config_file: "link_validation_rules") ⇒ LinkValidator
constructor
Initialize a new LinkValidator.
-
#validate(document) ⇒ ValidationReport
Validate all links in a document.
Constructor Details
#initialize(config_file: "link_validation_rules") ⇒ LinkValidator
Initialize a new LinkValidator.
52 53 54 55 |
# File 'lib/uniword/validation/link_validator.rb', line 52 def initialize(config_file: "link_validation_rules") @config = load_configuration(config_file) @checkers = initialize_checkers end |
Instance Attribute Details
#checkers ⇒ Array<LinkChecker> (readonly)
Returns Registered checkers.
39 40 41 |
# File 'lib/uniword/validation/link_validator.rb', line 39 def checkers @checkers end |
#config ⇒ Hash (readonly)
Returns Loaded configuration.
36 37 38 |
# File 'lib/uniword/validation/link_validator.rb', line 36 def config @config end |
Instance Method Details
#validate(document) ⇒ ValidationReport
Validate all links in a document.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/uniword/validation/link_validator.rb', line 66 def validate(document) report = ValidationReport.new # Validate hyperlinks validate_hyperlinks(document, report) # Validate bookmarks (cross-references) validate_bookmarks(document, report) # Validate footnote references validate_footnotes(document, report) report end |