class LCS::Change
Represents a simplistic (non-contextual) change. Represents the removal or addition of an element from either the old or the new sequenced enumerable.
Constants
Attributes
action[R]
Returns the action this Change represents.
element[R]
Returns the sequence element of the Change.
position[R]
Returns the position of the Change.
Public Class Methods
from_a(arr)
click to toggle source
# File lib/diff/lcs/change.rb, line 43 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 raise "Invalid change array format provided." end end
new(*args)
click to toggle source
# File lib/diff/lcs/change.rb, line 26 def initialize(*args) @action, @position, @element = *args unless Diff::LCS::Change.valid_action?(@action) raise "Invalid Change Action '#{@action}'" end raise "Invalid Position Type" unless @position.kind_of? IntClass end
valid_action?(action)
click to toggle source
# File lib/diff/lcs/change.rb, line 14 def self.valid_action?(action) VALID_ACTIONS.include? action end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/diff/lcs/change.rb, line 64 def <=>(other) r = self.action <=> other.action r = self.position <=> other.position if r.zero? r = self.element <=> other.element if r.zero? r end
==(other)
click to toggle source
# File lib/diff/lcs/change.rb, line 57 def ==(other) (self.class == other.class) and (self.action == other.action) and (self.position == other.position) and (self.element == other.element) end
adding?()
click to toggle source
# File lib/diff/lcs/change.rb, line 71 def adding? @action == '+' end
changed?()
click to toggle source
# File lib/diff/lcs/change.rb, line 83 def changed? @action == '!' end
deleting?()
click to toggle source
# File lib/diff/lcs/change.rb, line 75 def deleting? @action == '-' end
finished_a?()
click to toggle source
# File lib/diff/lcs/change.rb, line 87 def finished_a? @action == '>' end
finished_b?()
click to toggle source
# File lib/diff/lcs/change.rb, line 91 def finished_b? @action == '<' end
inspect()
click to toggle source
# File lib/diff/lcs/change.rb, line 35 def inspect to_a.inspect end
to_a()
click to toggle source
# File lib/diff/lcs/change.rb, line 39 def to_a [ @action, @position, @element ] end
unchanged?()
click to toggle source
# File lib/diff/lcs/change.rb, line 79 def unchanged? @action == '=' end