class Diff::LCS::Change
enumerable.
addition of an element from either the old or the new sequenced
Represents a simplistic (non-contextual) change. Represents the removal or
def self.from_a(arr)
def self.from_a(arr) arr = arr.flatten(1) case arr.size when 5 Diff::LCS::ContextChange.new(*(arr[0...5])) when 3 Diff::LCS::Change.new(*(arr[0...3])) else fail 'Invalid change array format provided.' end end
def self.valid_action?(action)
def self.valid_action?(action) VALID_ACTIONS.include? action end
def <=>(other)
def <=>(other) r = action <=> other.action r = position <=> other.position if r.zero? r = element <=> other.element if r.zero? r end
def ==(other)
def ==(other) (self.class == other.class) and (action == other.action) and (position == other.position) and (element == other.element) end
def adding?
def adding? @action == '+' end
def changed?
def changed? @action == '!' end
def deleting?
def deleting? @action == '-' end
def finished_a?
def finished_a? @action == '>' end
def finished_b?
def finished_b? @action == '<' end
def initialize(*args)
def initialize(*args) @action, @position, @element = *args fail "Invalid Change Action '#{@action}'" unless Diff::LCS::Change.valid_action?(@action) fail 'Invalid Position Type' unless @position.kind_of? IntClass end
def inspect(*_args)
def inspect(*_args) "#<#{self.class}: #{to_a.inspect}>" end
def to_a
def to_a [@action, @position, @element] end
def unchanged?
def unchanged? @action == '=' end