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.is_a? 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