Sha256: 646af2b581ea4fdb1addac0709ea0e40866d2ef66f3167b4cd7f7b94d7ec46a3

Contents?: true

Size: 767 Bytes

Versions: 6

Compression:

Stored size: 767 Bytes

Contents

# frozen_string_literal: true

# A block is an operation removing, adding, or changing a group of items.
# Basically, this is just a list of changes, where each change adds or
# deletes a single item. Used by bin/ldiff.
class Diff::LCS::Block
  attr_reader :changes, :insert, :remove

  def initialize(chunk)
    @changes = []
    @insert = []
    @remove = []

    chunk.each do |item|
      @changes << item
      @remove << item if item.deleting?
      @insert << item if item.adding?
    end
  end

  def diff_size
    (@insert.size - @remove.size).abs
  end

  def op
    case [@remove.empty?, @insert.empty?]
    when [false, false]
      '!'
    when [false, true]
      '-'
    when [true, false]
      '+'
    else # [true, true]
      '^'
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
coingecko_client-0.1.2 vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/block.rb
coingecko_client-0.1.1 vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/block.rb
coingecko_client-0.1.0 vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/block.rb
diff-lcs-1.4.3 lib/diff/lcs/block.rb
diff-lcs-1.4.2 lib/diff/lcs/block.rb
diff-lcs-1.4.1 lib/diff/lcs/block.rb