Class: Diff::LCS::ContextChange
- Inherits:
-
Object
- Object
- Diff::LCS::ContextChange
- Includes:
- Comparable, ChangeTypeTests
- Defined in:
- lib/diff/lcs/change.rb
Overview
Represents a contextual change. Contains the position and values of the elements in the old and the new sequenced enumerables as well as the action taken.
Instance Attribute Summary (collapse)
-
- (Object) action
readonly
Returns the action this Change represents.
-
- (Object) new_element
readonly
Returns the value of attribute new_element.
-
- (Object) new_position
readonly
Returns the value of attribute new_position.
-
- (Object) old_element
readonly
Returns the value of attribute old_element.
-
- (Object) old_position
readonly
Returns the value of attribute old_position.
Class Method Summary (collapse)
-
+ (Object) from_a(arr)
Creates a ContextChange from an array produced by ContextChange#to_a.
-
+ (Object) simplify(event)
Simplifies a context change for use in some diff callbacks.
Instance Method Summary (collapse)
- - (Object) <=>(other)
- - (Object) ==(other)
-
- (ContextChange) initialize(action, old_position, old_element, new_position, new_element)
constructor
A new instance of ContextChange.
- - (Object) inspect(*args)
- - (Object) to_a
Methods included from ChangeTypeTests
#adding?, #changed?, #deleting?, #finished_a?, #finished_b?, #unchanged?
Constructor Details
- (ContextChange) initialize(action, old_position, old_element, new_position, new_element)
A new instance of ContextChange
117 118 119 120 121 122 123 |
# File 'lib/diff/lcs/change.rb', line 117 def initialize(action, old_position, old_element, new_position, new_element) @action = action @old_position = old_position @old_element = old_element @new_position = new_position @new_element = new_element end |
Instance Attribute Details
- (Object) action (readonly)
Returns the action this Change represents. Can be '+' (#adding?), '-' (#deleting?), '=' (#unchanged?), # or '!' (#changed?). When created by Diff::LCS#diff or Diff::LCS#sdiff, it may also be '>' (#finished_a?) or '<' (#finished_b?).
88 89 90 |
# File 'lib/diff/lcs/change.rb', line 88 def action @action end |
- (Object) new_element (readonly)
Returns the value of attribute new_element
92 93 94 |
# File 'lib/diff/lcs/change.rb', line 92 def new_element @new_element end |
- (Object) new_position (readonly)
Returns the value of attribute new_position
91 92 93 |
# File 'lib/diff/lcs/change.rb', line 91 def new_position @new_position end |
- (Object) old_element (readonly)
Returns the value of attribute old_element
90 91 92 |
# File 'lib/diff/lcs/change.rb', line 90 def old_element @old_element end |
- (Object) old_position (readonly)
Returns the value of attribute old_position
89 90 91 |
# File 'lib/diff/lcs/change.rb', line 89 def old_position @old_position end |
Class Method Details
+ (Object) from_a(arr)
Creates a ContextChange from an array produced by ContextChange#to_a.
130 131 132 133 134 135 136 137 |
# File 'lib/diff/lcs/change.rb', line 130 def self.from_a(arr) if arr.size == 5 Diff::LCS::ContextChange.new(arr[0], arr[1], arr[2], arr[3], arr[4]) else Diff::LCS::ContextChange.new(arr[0], arr[1][0], arr[1][1], arr[2][0], arr[2][1]) end end |
+ (Object) simplify(event)
Simplifies a context change for use in some diff callbacks. '<' actions are converted to '-' and '>' actions are converted to '+'.
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/diff/lcs/change.rb', line 141 def self.simplify(event) ea = event.to_a case ea[0] when '-' ea[2][1] = nil when '<' ea[0] = '-' ea[2][1] = nil when '+' ea[1][1] = nil when '>' ea[0] = '+' ea[1][1] = nil end Diff::LCS::ContextChange.from_a(ea) end |
Instance Method Details
- (Object) <=>(other)
108 109 110 111 112 113 114 115 |
# File 'lib/diff/lcs/change.rb', line 108 def <=>(other) r = @action <=> other.action r = @old_position <=> other.old_position if r.zero? r = @new_position <=> other.new_position if r.zero? r = @old_element <=> other.old_element if r.zero? r = @new_element <=> other.new_element if r.zero? r end |
- (Object) ==(other)
96 97 98 99 100 101 102 |
# File 'lib/diff/lcs/change.rb', line 96 def ==(other) (@action == other.action) and (@old_position == other.old_position) and (@new_position == other.new_position) and (@old_element == other.old_element) and (@new_element == other.new_element) end |
- (Object) inspect(*args)
104 105 106 |
# File 'lib/diff/lcs/change.rb', line 104 def inspect(*args) %Q(#<#{self.class.name}:#{__id__} @action=#{action} positions=#{old_position},#{new_position} elements=#{old_element.inspect},#{new_element.inspect}>) end |
- (Object) to_a
125 126 127 |
# File 'lib/diff/lcs/change.rb', line 125 def to_a [@action, [@old_position, @old_element], [@new_position, @new_element]] end |