Class: Diff::LCS::ContextChange
- Includes:
- Comparable, ChangeTypeTests
- Defined in:
- lib/gems/diff-lcs-1.1.2/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
-
#action ⇒ Object
readonly
Returns the action this Change represents.
-
#new_element ⇒ Object
readonly
Returns the value of attribute new_element.
-
#new_position ⇒ Object
readonly
Returns the value of attribute new_position.
-
#old_element ⇒ Object
readonly
Returns the value of attribute old_element.
-
#old_position ⇒ Object
readonly
Returns the value of attribute old_position.
Class Method Summary collapse
-
.from_a(arr) ⇒ Object
Creates a ContextChange from an array produced by ContextChange#to_a.
-
.simplify(event) ⇒ Object
Simplifies a context change for use in some diff callbacks.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #==(other) ⇒ Object
-
#initialize(action, old_position, old_element, new_position, new_element) ⇒ ContextChange
constructor
A new instance of ContextChange.
- #inspect(*args) ⇒ Object
- #to_a ⇒ Object
Methods included from ChangeTypeTests
#adding?, #changed?, #deleting?, #finished_a?, #finished_b?, #unchanged?
Constructor Details
#initialize(action, old_position, old_element, new_position, new_element) ⇒ ContextChange
Returns a new instance of ContextChange.
125 126 127 128 129 130 131 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 125 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
#action ⇒ Object (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?).
96 97 98 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 96 def action @action end |
#new_element ⇒ Object (readonly)
Returns the value of attribute new_element.
100 101 102 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 100 def new_element @new_element end |
#new_position ⇒ Object (readonly)
Returns the value of attribute new_position.
99 100 101 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 99 def new_position @new_position end |
#old_element ⇒ Object (readonly)
Returns the value of attribute old_element.
98 99 100 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 98 def old_element @old_element end |
#old_position ⇒ Object (readonly)
Returns the value of attribute old_position.
97 98 99 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 97 def old_position @old_position end |
Class Method Details
.from_a(arr) ⇒ Object
Creates a ContextChange from an array produced by ContextChange#to_a.
138 139 140 141 142 143 144 145 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 138 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 |
.simplify(event) ⇒ Object
Simplifies a context change for use in some diff callbacks. ‘<’ actions are converted to ‘-’ and ‘>’ actions are converted to ‘+’.
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 149 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
#<=>(other) ⇒ Object
116 117 118 119 120 121 122 123 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 116 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 |
#==(other) ⇒ Object
104 105 106 107 108 109 110 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 104 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 |
#inspect(*args) ⇒ Object
112 113 114 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 112 def inspect(*args) %Q(#<#{self.class.name}:#{__id__} @action=#{action} positions=#{old_position},#{new_position} elements=#{old_element.inspect},#{new_element.inspect}>) end |
#to_a ⇒ Object
133 134 135 |
# File 'lib/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb', line 133 def to_a [@action, [@old_position, @old_element], [@new_position, @new_element]] end |