Class: Uniword::Assembly::CrossReferenceResolver
- Inherits:
-
Object
- Object
- Uniword::Assembly::CrossReferenceResolver
- Defined in:
- lib/uniword/assembly/cross_reference_resolver.rb
Overview
Resolves cross-references and bookmark links in assembled documents.
Responsibility: Update cross-references during document assembly. Single Responsibility: Only handles reference resolution.
The CrossReferenceResolver:
-
Resolves bookmark references
-
Updates cross-reference fields
-
Handles page number references
-
Maintains reference integrity
-
Supports inter-component references
Instance Attribute Summary collapse
-
#bookmark_mappings ⇒ Hash
readonly
Bookmark ID mappings.
Instance Method Summary collapse
-
#add_bookmark_mapping(old_id, new_id) ⇒ void
Add bookmark ID mapping.
-
#bookmark_exists?(bookmark_id) ⇒ Boolean
Check if bookmark exists.
-
#bookmark_ids ⇒ Array<String>
List all bookmarks.
-
#clear ⇒ void
Clear all mappings and registry.
-
#get_bookmark(bookmark_id) ⇒ Bookmark?
Get bookmark by ID.
-
#initialize ⇒ CrossReferenceResolver
constructor
Initialize resolver.
-
#resolve(document) ⇒ Document
Resolve cross-references in document.
Constructor Details
#initialize ⇒ CrossReferenceResolver
Initialize resolver.
33 34 35 36 |
# File 'lib/uniword/assembly/cross_reference_resolver.rb', line 33 def initialize @bookmark_mappings = {} @bookmark_registry = {} end |
Instance Attribute Details
#bookmark_mappings ⇒ Hash (readonly)
Returns Bookmark ID mappings.
27 28 29 |
# File 'lib/uniword/assembly/cross_reference_resolver.rb', line 27 def bookmark_mappings @bookmark_mappings end |
Instance Method Details
#add_bookmark_mapping(old_id, new_id) ⇒ void
This method returns an undefined value.
Add bookmark ID mapping.
63 64 65 |
# File 'lib/uniword/assembly/cross_reference_resolver.rb', line 63 def add_bookmark_mapping(old_id, new_id) @bookmark_mappings[old_id] = new_id end |
#bookmark_exists?(bookmark_id) ⇒ Boolean
Check if bookmark exists.
71 72 73 74 |
# File 'lib/uniword/assembly/cross_reference_resolver.rb', line 71 def bookmark_exists?(bookmark_id) resolved_id = resolve_bookmark_id(bookmark_id) @bookmark_registry.key?(resolved_id) end |
#bookmark_ids ⇒ Array<String>
List all bookmarks.
88 89 90 |
# File 'lib/uniword/assembly/cross_reference_resolver.rb', line 88 def bookmark_ids @bookmark_registry.keys end |
#clear ⇒ void
This method returns an undefined value.
Clear all mappings and registry.
95 96 97 98 |
# File 'lib/uniword/assembly/cross_reference_resolver.rb', line 95 def clear @bookmark_mappings.clear @bookmark_registry.clear end |
#get_bookmark(bookmark_id) ⇒ Bookmark?
Get bookmark by ID.
80 81 82 83 |
# File 'lib/uniword/assembly/cross_reference_resolver.rb', line 80 def get_bookmark(bookmark_id) resolved_id = resolve_bookmark_id(bookmark_id) @bookmark_registry[resolved_id] end |
#resolve(document) ⇒ Document
Resolve cross-references in document.
45 46 47 48 49 50 51 52 53 |
# File 'lib/uniword/assembly/cross_reference_resolver.rb', line 45 def resolve(document) # First pass: collect all bookmarks collect_bookmarks(document) # Second pass: resolve references resolve_references(document) document end |