module Test::Unit::Diff
def diff(differ_class, from, to, options={})
def diff(differ_class, from, to, options={}) if from.respond_to?(:valid_encoding?) and not from.valid_encoding? from = from.dup.force_encoding("ASCII-8BIT") end if to.respond_to?(:valid_encoding?) and not to.valid_encoding? to = to.dup.force_encoding("ASCII-8BIT") end differ = differ_class.new(from.split(/\r?\n/), to.split(/\r?\n/)) lines = differ.diff(options) if Object.const_defined?(:EncodingError) begin lines.join("\n") rescue EncodingError lines.collect {|line| line.force_encoding("ASCII-8BIT")}.join("\n") end else lines.join("\n") end end
def fold(string)
def fold(string) string.split(/\r?\n/).collect do |line| line.gsub(/(.{78})/, "\\1\n") end.join("\n") end
def folded_readable(from, to, options={})
def folded_readable(from, to, options={}) readable(fold(from), fold(to), options) end
def need_fold?(diff)
def need_fold?(diff) /^[-+].{79}/ =~ diff end
def readable(from, to, options={})
def readable(from, to, options={}) diff(ReadableDiffer, from, to, options) end
def unified(from, to, options={})
def unified(from, to, options={}) diff(UnifiedDiffer, from, to, options) end