Sha256: 1e8222d712bdee7371f2588a92a55f318d17c64d2c236b949ec2859e17a1e123

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

module PrettyDiff
  class Chunk
    attr_reader :diff, :meta_info, :lines, :contents

    def initialize(diff, meta_info, contents)
      @diff = diff
      @meta_info = meta_info
      @contents = contents
      @lines = find_lines
    end

    def line_numbers
      @_line_numbers ||= LineNumbers.new(diff, meta_info)
    end

  private

    def wdiff(lines)
      PrettyDiff::WordDiffFinder.find_word_diffs(lines)
    end

    def find_lines
      [].tap do |lines|
        plain_lines = contents.split(/\r?\n|\r/)
        wdiff(contents.split(/\r?\n|\r/)).each_with_index do |line_str, idx|
          begin
            line_str =~ //
          rescue ArgumentError
            line_str = plain_lines[idx]
          end

          line = Line.new(self, line_str)
          next if line.ignored?
          lines << line
          line_numbers.act_on_line(line)
          line.left_number = line_numbers.left_column.last
          line.right_number = line_numbers.right_column.last
        end
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pretty_diff-2.1.3 lib/pretty_diff/chunk.rb