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
- IntClass
- VALID_ACTIONS
-
The only actions valid for changes are ‘+’ (add), ‘-’ (delete), ‘=’ (no change), ‘!’ (changed), ‘<’ (tail changes from first sequence), or ‘>’ (tail changes from second sequence). The last two (‘<>’) are only found with
Diff::LCS::diff
andDiff::LCS::sdiff
.
Attributes
Returns the action this Change
represents.
Returns the sequence element of the Change
.
Returns the position of the Change
.
Public Class Methods
Source
# File lib/diff/lcs/change.rb, line 44 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
Source
# File lib/diff/lcs/change.rb, line 27 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
Source
# File lib/diff/lcs/change.rb, line 15 def self.valid_action?(action) VALID_ACTIONS.include? action end
Public Instance Methods
Source
# File lib/diff/lcs/change.rb, line 65 def <=>(other) r = action <=> other.action r = position <=> other.position if r.zero? r = element <=> other.element if r.zero? r end
Source
# File lib/diff/lcs/change.rb, line 58 def ==(other) (self.class == other.class) and (action == other.action) and (position == other.position) and (element == other.element) end
Source
# File lib/diff/lcs/change.rb, line 34 def inspect(*_args) "#<#{self.class}: #{to_a.inspect}>" end
Source
# File lib/diff/lcs/change.rb, line 38 def to_a [@action, @position, @element] end
Also aliased as: to_ary