From 94fce05ade46ca1b51fa96ba2c425bc78a2100ff Mon Sep 17 00:00:00 2001 From: Alex Coplan Date: Sat, 25 Aug 2012 16:39:49 +0100 Subject: [PATCH 1/3] use same color config method as core --- lib/rspec/matchers/configuration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rspec/matchers/configuration.rb b/lib/rspec/matchers/configuration.rb index adc6a9de5..2de944e90 100644 --- a/lib/rspec/matchers/configuration.rb +++ b/lib/rspec/matchers/configuration.rb @@ -43,7 +43,7 @@ def syntax # fallback if rspec core not available if defined?(RSpec::Core) def color? - RSpec.configuration.color + RSpec.configuration.color_enabled? end else attr_writer :color From 248004e00cf2fb0591179a5879559d0458e2147c Mon Sep 17 00:00:00 2001 From: Alex Coplan Date: Sat, 25 Aug 2012 16:44:50 +0100 Subject: [PATCH 2/3] improve diff coloring code --- lib/rspec/expectations/differ.rb | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/lib/rspec/expectations/differ.rb b/lib/rspec/expectations/differ.rb index e40550b16..cd6b86bac 100644 --- a/lib/rspec/expectations/differ.rb +++ b/lib/rspec/expectations/differ.rb @@ -63,30 +63,36 @@ def context_lines 3 end - def color(text, code) - "\e[#{code}m#{text}\e[0m" + def color(text, color_code) + "\e[#{color_code}m#{text}\e[0m" + end + + # define methods for each color name + { + :red => 31, + :green => 32, + :blue => 34 + }.each do |color_name, color_code| + define_method color_name do |text| + color(text, color_code) + end end def color_diff(diff) return diff unless RSpec::Matchers.configuration.color? - red = 31 - green = 32 - blue = 34 - - lines = diff.lines.map do |line| + diff.lines.map { |line| case line[0].chr when "+" - color(line, green) + green line when "-" - color(line, red) + red line when "@" - line[1].chr == "@" ? color(line, blue) : line + line[1].chr == "@" ? blue(line) : line else line end - end - lines.join + }.join end def object_to_string(object) From 7cdd88b33a48563229083b0710237a25c69179a2 Mon Sep 17 00:00:00 2001 From: Alex Coplan Date: Sat, 25 Aug 2012 19:53:20 +0100 Subject: [PATCH 3/3] revert to using static color methods --- lib/rspec/expectations/differ.rb | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/rspec/expectations/differ.rb b/lib/rspec/expectations/differ.rb index cd6b86bac..38bd47d46 100644 --- a/lib/rspec/expectations/differ.rb +++ b/lib/rspec/expectations/differ.rb @@ -67,15 +67,16 @@ def color(text, color_code) "\e[#{color_code}m#{text}\e[0m" end - # define methods for each color name - { - :red => 31, - :green => 32, - :blue => 34 - }.each do |color_name, color_code| - define_method color_name do |text| - color(text, color_code) - end + def red(text) + color(text, 31) + end + + def green(text) + color(text, 32) + end + + def blue(text) + color(text, 34) end def color_diff(diff)