Class: Coradoc::AsciiDoc::Model::Resolver
- Inherits:
-
Object
- Object
- Coradoc::AsciiDoc::Model::Resolver
- Defined in:
- lib/coradoc/asciidoc/model/resolver.rb
Overview
Resolver classes for handling external document references.
The resolver infrastructure provides a unified way to handle different types of external references (includes, images, media) with configurable resolution strategies.
Instance Attribute Summary collapse
-
#image_resolver ⇒ ImageResolver
readonly
The image resolver.
-
#include_resolver ⇒ IncludeResolver?
readonly
The include resolver (nil if disabled).
-
#media_resolver ⇒ MediaResolver
readonly
The media resolver.
-
#output_dir ⇒ String?
readonly
The output directory for copied files.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Resolver
constructor
Create a new Resolver with specified options.
-
#resolve(node, base_dir, depth = 0) ⇒ Base+
Resolve a single node.
-
#resolve_document(document, base_dir) ⇒ Document
Resolve an entire document.
Constructor Details
#initialize(options = {}) ⇒ Resolver
Create a new Resolver with specified options.
49 50 51 52 53 54 55 56 |
# File 'lib/coradoc/asciidoc/model/resolver.rb', line 49 def initialize( = {}) @include_resolver = [:includes] ? IncludeResolver.new : nil @image_resolver = ImageResolver.new(strategy: [:images] || :reference) @media_resolver = MediaResolver.new(strategy: [:media] || :reference) @output_dir = [:output_dir] @max_recursion = [:max_recursion] || 10 @resolved_paths = {} # Track resolved paths to prevent infinite recursion end |
Instance Attribute Details
#image_resolver ⇒ ImageResolver (readonly)
Returns the image resolver.
32 33 34 |
# File 'lib/coradoc/asciidoc/model/resolver.rb', line 32 def image_resolver @image_resolver end |
#include_resolver ⇒ IncludeResolver? (readonly)
Returns the include resolver (nil if disabled).
29 30 31 |
# File 'lib/coradoc/asciidoc/model/resolver.rb', line 29 def include_resolver @include_resolver end |
#media_resolver ⇒ MediaResolver (readonly)
Returns the media resolver.
35 36 37 |
# File 'lib/coradoc/asciidoc/model/resolver.rb', line 35 def media_resolver @media_resolver end |
#output_dir ⇒ String? (readonly)
Returns the output directory for copied files.
38 39 40 |
# File 'lib/coradoc/asciidoc/model/resolver.rb', line 38 def output_dir @output_dir end |
Instance Method Details
#resolve(node, base_dir, depth = 0) ⇒ Base+
Resolve a single node.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/coradoc/asciidoc/model/resolver.rb', line 65 def resolve(node, base_dir, depth = 0) return node if depth > @max_recursion case node when Include resolve_include(node, base_dir, depth) when Image::BlockImage, Image::InlineImage resolve_image(node, base_dir) when Video resolve_media(node, base_dir, :video) when Audio resolve_media(node, base_dir, :audio) else node end end |
#resolve_document(document, base_dir) ⇒ Document
Resolve an entire document.
88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/coradoc/asciidoc/model/resolver.rb', line 88 def resolve_document(document, base_dir) resolved_sections = document.sections.map do |section| resolve_node_recursive(section, base_dir, 0) end.flatten.compact document.class.new( document_attributes: document.document_attributes, header: document.header, sections: resolved_sections ) end |