class CSVDiff::Algorithm::Diff

Holds the details of a single difference

Attributes

diff_type[RW]
fields[R]
row[R]
sibling_position[R]

Public Class Methods

new(diff_type, fields, row_idx, pos_idx) click to toggle source
# File lib/csv-diff/algorithm.rb, line 14
def initialize(diff_type, fields, row_idx, pos_idx)
    @diff_type = diff_type
    @fields = fields
    @row = row_idx + 1
    self.sibling_position = pos_idx
end

Public Instance Methods

[](key) click to toggle source

For backwards compatibility and access to fields with differences

# File lib/csv-diff/algorithm.rb, line 37
def [](key)
    case key
    when :action
        a = diff_type.to_s
        a[0] = a[0].upcase
        a
    when :row
        @row
    when :sibling_position
        @sibling_position
    else
        @fields[key] || @fields[key.to_s.intern] || @fields[key.to_s]
    end
end
sibling_position=(pos_idx) click to toggle source
# File lib/csv-diff/algorithm.rb, line 22
def sibling_position=(pos_idx)
    if pos_idx.is_a?(Array)
        pos_idx.compact!
        if pos_idx.first != pos_idx.last
            @sibling_position = pos_idx.map{ |pos| pos + 1 }
        else
            @sibling_position = pos_idx.first + 1
        end
    else
        @sibling_position = pos_idx + 1
    end
end