Module: Ast::Merge::RegionMergeable
- Included in:
- SmartMergerBase
- Defined in:
- lib/ast/merge/region_mergeable.rb
Overview
Mixin for adding region support to SmartMerger classes.
This module provides functionality for detecting and handling regions within documents that should be merged with different strategies. Regions are portions of a document (like YAML frontmatter or fenced code blocks) that may require specialized merging.
Defined Under Namespace
Classes: ExtractedRegion, RegionConfig
Constant Summary collapse
- DEFAULT_PLACEHOLDER_PREFIX =
Default placeholder prefix for extracted regions
"<<<AST_MERGE_REGION_"- DEFAULT_PLACEHOLDER_SUFFIX =
">>>"
Instance Method Summary collapse
-
#extract_dest_regions(content) ⇒ String
Extract regions from the destination content, replacing with placeholders.
-
#extract_template_regions(content) ⇒ String
Extract regions from the template content, replacing with placeholders.
-
#regions_configured? ⇒ Boolean
Check if this merger has region configurations.
-
#setup_regions(regions:, region_placeholder: nil) ⇒ Object
Set up region handling for this merger instance.
-
#substitute_merged_regions(merged_content) ⇒ String
Merge extracted regions and substitute them back into the merged content.
Instance Method Details
#extract_dest_regions(content) ⇒ String
Extract regions from the destination content, replacing with placeholders.
127 128 129 130 131 |
# File 'lib/ast/merge/region_mergeable.rb', line 127 def extract_dest_regions(content) return content unless regions_configured? extract_regions(content, @extracted_dest_regions) end |
#extract_template_regions(content) ⇒ String
Extract regions from the template content, replacing with placeholders.
114 115 116 117 118 |
# File 'lib/ast/merge/region_mergeable.rb', line 114 def extract_template_regions(content) return content unless regions_configured? extract_regions(content, @extracted_template_regions) end |
#regions_configured? ⇒ Boolean
Check if this merger has region configurations.
103 104 105 |
# File 'lib/ast/merge/region_mergeable.rb', line 103 def regions_configured? @region_configs && !@region_configs.empty? end |
#setup_regions(regions:, region_placeholder: nil) ⇒ Object
Set up region handling for this merger instance.
91 92 93 94 95 96 |
# File 'lib/ast/merge/region_mergeable.rb', line 91 def setup_regions(regions:, region_placeholder: nil) @region_configs = build_region_configs(regions) @region_placeholder_prefix = region_placeholder || DEFAULT_PLACEHOLDER_PREFIX @extracted_template_regions = [] @extracted_dest_regions = [] end |
#substitute_merged_regions(merged_content) ⇒ String
Merge extracted regions and substitute them back into the merged content.
139 140 141 142 143 144 145 146 147 |
# File 'lib/ast/merge/region_mergeable.rb', line 139 def substitute_merged_regions(merged_content) return merged_content unless regions_configured? result = merged_content # Process regions in reverse order of extraction to handle nested placeholders # We need to merge template and dest regions by their placeholder index merge_and_substitute_regions(result) end |