Class: Prism::Merge::FileAligner

Inherits:
Object
  • Object
show all
Defined in:
lib/prism/merge/file_aligner.rb

Overview

Identifies sequential “anchor sections” where template and destination have identical or equivalent lines, defining merge boundaries. Similar to diff algorithm but AST-aware.

Defined Under Namespace

Classes: Anchor, Boundary

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(template_analysis, dest_analysis) ⇒ FileAligner

Returns a new instance of FileAligner.

Parameters:

  • template_analysis (FileAnalysis)

    Template file analysis

  • dest_analysis (FileAnalysis)

    Destination file analysis



48
49
50
51
52
53
# File 'lib/prism/merge/file_aligner.rb', line 48

def initialize(template_analysis, dest_analysis)
  @template_analysis = template_analysis
  @dest_analysis = dest_analysis
  @anchors = []
  @boundaries = []
end

Instance Attribute Details

#anchorsObject (readonly)

Returns the value of attribute anchors.



44
45
46
# File 'lib/prism/merge/file_aligner.rb', line 44

def anchors
  @anchors
end

#boundariesObject (readonly)

Returns the value of attribute boundaries.



44
45
46
# File 'lib/prism/merge/file_aligner.rb', line 44

def boundaries
  @boundaries
end

#dest_analysisObject (readonly)

Returns the value of attribute dest_analysis.



44
45
46
# File 'lib/prism/merge/file_aligner.rb', line 44

def dest_analysis
  @dest_analysis
end

#template_analysisObject (readonly)

Returns the value of attribute template_analysis.



44
45
46
# File 'lib/prism/merge/file_aligner.rb', line 44

def template_analysis
  @template_analysis
end

Instance Method Details

#alignArray<Boundary>

Perform alignment and identify anchors and boundaries

Returns:

  • (Array<Boundary>)

    Boundaries requiring conflict resolution



57
58
59
60
61
# File 'lib/prism/merge/file_aligner.rb', line 57

def align
  find_anchors
  compute_boundaries
  @boundaries
end