Class: Canon::Diff::DiffBlockBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/canon/diff/diff_block_builder.rb

Overview

Builds DiffBlocks from DiffLines Handles grouping of contiguous changed lines and filtering by normative/informative

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(diff_lines, show_diffs) ⇒ DiffBlockBuilder

Returns a new instance of DiffBlockBuilder.



19
20
21
22
# File 'lib/canon/diff/diff_block_builder.rb', line 19

def initialize(diff_lines, show_diffs)
  @diff_lines = diff_lines
  @show_diffs = show_diffs
end

Class Method Details

.build_blocks(diff_lines, show_diffs: :all) ⇒ Array<DiffBlock>

Build diff blocks from diff lines

Parameters:

  • diff_lines (Array<DiffLine>)

    The diff lines to process

  • show_diffs (Symbol) (defaults to: :all)

    Filter setting (:normative, :informative, :all)

Returns:

  • (Array<DiffBlock>)

    Filtered diff blocks



15
16
17
# File 'lib/canon/diff/diff_block_builder.rb', line 15

def self.build_blocks(diff_lines, show_diffs: :all)
  new(diff_lines, show_diffs).build
end

Instance Method Details

#buildObject



24
25
26
27
28
29
30
# File 'lib/canon/diff/diff_block_builder.rb', line 24

def build
  # Group contiguous changed lines into blocks
  blocks = group_into_blocks

  # Filter blocks based on show_diffs setting
  filter_blocks(blocks)
end