Class: Spec::Expectations::Differs::Default
- Defined in:
- lib/spec/expectations/differs/default.rb
Overview
TODO add colour support TODO add some rdoc
Instance Method Summary collapse
- #diff_as_object(target, expected) ⇒ Object
-
#diff_as_string(data_old, data_new) ⇒ Object
This is snagged from diff/lcs/ldiff.rb (which is a commandline tool).
-
#initialize(format = :unified, context_lines = nil, colour = nil) ⇒ Default
constructor
A new instance of Default.
Constructor Details
#initialize(format = :unified, context_lines = nil, colour = nil) ⇒ Default
Returns a new instance of Default.
16 17 18 19 20 21 22 |
# File 'lib/spec/expectations/differs/default.rb', line 16 def initialize(format=:unified,context_lines=nil,colour=nil) context_lines ||= 3 colour ||= false @format,@context_lines,@colour = format,context_lines,colour end |
Instance Method Details
#diff_as_object(target, expected) ⇒ Object
56 57 58 |
# File 'lib/spec/expectations/differs/default.rb', line 56 def diff_as_object(target,expected) diff_as_string(PP.pp(target,""), PP.pp(expected,"")) end |
#diff_as_string(data_old, data_new) ⇒ Object
This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/spec/expectations/differs/default.rb', line 25 def diff_as_string(data_old, data_new) data_old = data_old.split(/\n/).map! { |e| e.chomp } data_new = data_new.split(/\n/).map! { |e| e.chomp } output = "" diffs = Diff::LCS.diff(data_old, data_new) return output if diffs.empty? oldhunk = hunk = nil file_length_difference = 0 diffs.each do |piece| begin hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, @context_lines, file_length_difference) file_length_difference = hunk.file_length_difference next unless oldhunk # Hunks may overlap, which is why we need to be careful when our # diff includes lines of context. Otherwise, we might print # redundant lines. if (@context_lines > 0) and hunk.overlaps?(oldhunk) hunk.unshift(oldhunk) else output << oldhunk.diff(@format) end ensure oldhunk = hunk output << "\n" end end #Handle the last remaining hunk output << oldhunk.diff(@format) << "\n" end |