Class: Differ::Diff
- Inherits:
-
Object
- Object
- Differ::Diff
- Defined in:
- lib/differ/diff.rb
Instance Attribute Summary collapse
-
#raw ⇒ Object
readonly
Returns the value of attribute raw.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #delete(*str) ⇒ Object
- #format_as(f) ⇒ Object
-
#initialize ⇒ Diff
constructor
A new instance of Diff.
- #insert(*str) ⇒ Object
- #same(*str) ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize ⇒ Diff
Returns a new instance of Diff.
5 6 7 |
# File 'lib/differ/diff.rb', line 5 def initialize @raw = [] end |
Instance Attribute Details
#raw ⇒ Object (readonly)
Returns the value of attribute raw.
3 4 5 |
# File 'lib/differ/diff.rb', line 3 def raw @raw end |
Instance Method Details
#==(other) ⇒ Object
68 69 70 |
# File 'lib/differ/diff.rb', line 68 def ==(other) @raw == other.raw_array end |
#delete(*str) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/differ/diff.rb', line 36 def delete(*str) return if str.empty? if @raw.last.is_a? Change change = @raw.pop if change.insert? && @raw.last @raw.last << sep if change.insert.sub!(/^#{Regexp.quote(sep)}/, '') end change.delete << sep if change.delete? else change = Change.new(:delete => @raw.empty? ? '' : sep) end @raw << change @raw.last.delete << str.join(sep) end |
#format_as(f) ⇒ Object
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/differ/diff.rb', line 76 def format_as(f) f = Differ.format_for(f) @raw.inject('') do |sum, part| part = case part when String then part when Change then f.call(part) end sum << part end end |
#insert(*str) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/differ/diff.rb', line 52 def insert(*str) return if str.empty? if @raw.last.is_a? Change change = @raw.pop if change.delete? && @raw.last @raw.last << sep if change.delete.sub!(/^#{Regexp.quote(sep)}/, '') end change.insert << sep if change.insert? else change = Change.new(:insert => @raw.empty? ? '' : sep) end @raw << change @raw.last.insert << str.join(sep) end |
#same(*str) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/differ/diff.rb', line 9 def same(*str) return if str.empty? if @raw.last.is_a? String @raw.last << sep elsif @raw.last.is_a? Change if @raw.last.change? @raw << sep else change = @raw.pop if change.insert? && @raw.last @raw.last << sep if change.insert.sub!(/^#{Regexp.quote(sep)}/, '') end if change.delete? && @raw.last @raw.last << sep if change.delete.sub!(/^#{Regexp.quote(sep)}/, '') end @raw << change @raw.last.insert << sep if @raw.last.insert? @raw.last.delete << sep if @raw.last.delete? @raw << '' end else @raw << '' end @raw.last << str.join(sep) end |
#to_s ⇒ Object
72 73 74 |
# File 'lib/differ/diff.rb', line 72 def to_s @raw.join() end |