Class: Ast::Merge::Text::SmartMerger
- Inherits:
-
SmartMergerBase
- Object
- SmartMergerBase
- Ast::Merge::Text::SmartMerger
- Defined in:
- lib/ast/merge/text/smart_merger.rb
Overview
Smart merger for text-based files.
Provides intelligent merging of two text files using a simple line-based AST where lines are top-level nodes and words are nested nodes.
Constant Summary collapse
- DEFAULT_FREEZE_TOKEN =
Default freeze token for text merging
"text-merge"
Constants included from RegionMergeable
RegionMergeable::DEFAULT_PLACEHOLDER_PREFIX, RegionMergeable::DEFAULT_PLACEHOLDER_SUFFIX
Instance Attribute Summary
Attributes inherited from SmartMergerBase
#add_template_only_nodes, #aligner, #dest_analysis, #dest_content, #freeze_token, #match_refiner, #preference, #resolver, #result, #signature_generator, #template_analysis, #template_content
Instance Method Summary collapse
-
#initialize(template_content, dest_content, preference: :destination, add_template_only_nodes: false, freeze_token: DEFAULT_FREEZE_TOKEN, signature_generator: nil, regions: nil, region_placeholder: nil) ⇒ SmartMerger
constructor
Initialize a new SmartMerger.
-
#stats ⇒ Hash
Get merge statistics.
Methods inherited from SmartMergerBase
#merge, #merge_result, #merge_with_debug
Methods included from RegionMergeable
#extract_dest_regions, #extract_template_regions, #regions_configured?, #setup_regions, #substitute_merged_regions
Constructor Details
#initialize(template_content, dest_content, preference: :destination, add_template_only_nodes: false, freeze_token: DEFAULT_FREEZE_TOKEN, signature_generator: nil, regions: nil, region_placeholder: nil) ⇒ SmartMerger
Initialize a new SmartMerger
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/ast/merge/text/smart_merger.rb', line 64 def initialize( template_content, dest_content, preference: :destination, add_template_only_nodes: false, freeze_token: DEFAULT_FREEZE_TOKEN, signature_generator: nil, regions: nil, region_placeholder: nil ) super( template_content, dest_content, signature_generator: signature_generator, preference: preference, add_template_only_nodes: add_template_only_nodes, freeze_token: freeze_token, regions: regions, region_placeholder: region_placeholder, ) end |
Instance Method Details
#stats ⇒ Hash
Get merge statistics
89 90 91 92 93 94 95 96 97 |
# File 'lib/ast/merge/text/smart_merger.rb', line 89 def stats merge_result # Ensure merge has run { template_lines: @template_analysis.statements.count { |s| s.is_a?(LineNode) }, dest_lines: @dest_analysis.statements.count { |s| s.is_a?(LineNode) }, result_lines: @result.lines.size, decisions: @result.decision_summary, } end |