Class: Test::Unit::UI::Console::ColorizedReadableDiffer
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
|
|
Instance Chain:
|
|
Inherits: |
Test::Unit::Diff::ReadableDiffer
|
Defined in: | lib/test/unit/ui/console/testrunner.rb |
Class Method Summary
- .new(from, to, runner) ⇒ ColorizedReadableDiffer constructor
::Test::Unit::Diff::Differ
- Inherited
Instance Attribute Summary
- #one_line_all_change? ⇒ Boolean readonly private
Instance Method Summary
- #need_diff?(options = {}) ⇒ Boolean
- #color(name) private
- #cut_off_ratio private
- #default_ratio private
- #diff_line(from_line, to_line) private
- #output(something, color = nil) private
- #output_single(something, color = nil) private
- #tag(mark, color_name, contents) private
- #tag_deleted(contents) private
- #tag_difference(contents) private
- #tag_equal(contents) private
- #tag_inserted(contents) private
::Test::Unit::Diff::ReadableDiffer
- Inherited
::Test::Unit::Diff::Differ
- Inherited
Constructor Details
.new(from, to, runner) ⇒ ColorizedReadableDiffer
# File 'lib/test/unit/ui/console/testrunner.rb', line 635
def initialize(from, to, runner) @runner = runner super(from, to) end
Instance Attribute Details
#one_line_all_change? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'lib/test/unit/ui/console/testrunner.rb', line 649
def one_line_all_change? return false if operations.size != 1 tag, from_start, from_end, to_start, to_end = operations.first return false if tag != :replace return false if [from_start, from_end] != [0, 1] return false if [from_start, from_end] != [to_start, to_end] _, _, _line_operations = line_operations(@from.first, @to.first) _line_operations.size == 1 end
Instance Method Details
#color(name) (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 669
def color(name) @runner.__send__(:color, name) end
#cut_off_ratio (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 673
def cut_off_ratio 0 end
#default_ratio (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 677
def default_ratio 0 end
#diff_line(from_line, to_line) (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 706
def diff_line(from_line, to_line) to_operations = [] mark_operations = [] from_line, to_line, _operations = line_operations(from_line, to_line) no_replace = true _operations.each do |tag,| if tag == :replace no_replace = false break end end output_single("?", color("diff-difference-tag")) output_single(" ") _operations.each do |tag, from_start, from_end, to_start, to_end| from_width = compute_width(from_line, from_start, from_end) to_width = compute_width(to_line, to_start, to_end) case tag when :replace output_single(from_line[from_start...from_end], color("diff-deleted")) if (from_width < to_width) output_single(" " * (to_width - from_width)) end to_operations << Proc.new do output_single(to_line[to_start...to_end], color("diff-inserted")) if (to_width < from_width) output_single(" " * (from_width - to_width)) end end mark_operations << Proc.new do output_single("?" * from_width, color("diff-difference-tag")) if (to_width < from_width) output_single(" " * (from_width - to_width)) end end when :delete output_single(from_line[from_start...from_end], color("diff-deleted")) unless no_replace to_operations << Proc.new {output_single(" " * from_width)} mark_operations << Proc.new do output_single("-" * from_width, color("diff-deleted")) end end when :insert if no_replace output_single(to_line[to_start...to_end], color("diff-inserted")) else output_single(" " * to_width) to_operations << Proc.new do output_single(to_line[to_start...to_end], color("diff-inserted")) end mark_operations << Proc.new do output_single("+" * to_width, color("diff-inserted")) end end when :equal output_single(from_line[from_start...from_end]) unless no_replace to_operations << Proc.new {output_single(" " * to_width)} mark_operations << Proc.new {output_single(" " * to_width)} end else raise "unknown tag: #{tag}" end end output("") unless to_operations.empty? output_single("?", color("diff-difference-tag")) output_single(" ") to_operations.each do |operation| operation.call end output("") end unless mark_operations.empty? output_single("?", color("diff-difference-tag")) output_single(" ") mark_operations.each do |operation| operation.call end output("") end end
#need_diff?(options = {}) ⇒ Boolean
# File 'lib/test/unit/ui/console/testrunner.rb', line 640
def need_diff?(={}) return false if one_line_all_change? operations.each do |tag,| return true if [:replace, :equal].include?(tag) end false end
#output(something, color = nil) (private)
[ GitHub ]#output_single(something, color = nil) (private)
[ GitHub ]#tag(mark, color_name, contents) (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 681
def tag(mark, color_name, contents) _color = color(color_name) contents.each do |content| output_single(mark, _color) output_single(" ") output(content) end end
#tag_deleted(contents) (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 690
def tag_deleted(contents) tag("-", "diff-deleted-tag", contents) end
#tag_difference(contents) (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 702
def tag_difference(contents) tag("?", "diff-difference-tag", contents) end
#tag_equal(contents) (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 698
def tag_equal(contents) tag(" ", "normal", contents) end
#tag_inserted(contents) (private)
[ GitHub ]# File 'lib/test/unit/ui/console/testrunner.rb', line 694
def tag_inserted(contents) tag("+", "diff-inserted-tag", contents) end