From 05d5ab9a5edc857e4e95482f5ce581a240556050 Mon Sep 17 00:00:00 2001 From: Jim Weirich Date: Thu, 26 Aug 2010 07:45:31 -0400 Subject: [PATCH] Added colors to output (based on renemendoza's patch). --- src/edgecase.rb | 48 +++++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/src/edgecase.rb b/src/edgecase.rb index 71a70b9..3da9435 100644 --- a/src/edgecase.rb +++ b/src/edgecase.rb @@ -43,6 +43,18 @@ class Object end module EdgeCase + + module Color + #shamelessly stolen from redgreen + COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33, :blue => 34, :magenta => 35, :cyan => 36 } + def self.method_missing(color_name, *args) + color(color_name) + args.first + color(:clear) + end + def self.color(color) + "\e[#{COLORS[color.to_sym]}m" + end + end + class Sensei attr_reader :failure, :failed_test @@ -67,9 +79,9 @@ module EdgeCase def accumulate(test) if test.passed? @pass_count += 1 - puts " #{test.name} has expanded your awareness." + puts Color.green(" #{test.name} has expanded your awareness.") else - puts " #{test.name} has damaged your karma." + puts Color.red(" #{test.name} has damaged your karma.") @failed_test = test @failure = test.failure throw :edgecase_exit @@ -87,18 +99,19 @@ module EdgeCase def report if failed? puts - puts "You have not yet reached enlightenment ..." - puts failure.message + puts Color.green("You have not yet reached enlightenment ...") + puts Color.red(failure.message) puts - puts "Please meditate on the following code:" + puts Color.green("Please meditate on the following code:") if assert_failed? - puts find_interesting_lines(failure.backtrace) + #puts find_interesting_lines(failure.backtrace) + puts find_interesting_lines(failure.backtrace).collect {|l| Color.red(l) } else - puts failure.backtrace + puts Color.red(failure.backtrace) end puts end - say_something_zenlike + puts Color.green(say_something_zenlike) end def find_interesting_lines(backtrace) @@ -112,23 +125,24 @@ module EdgeCase def say_something_zenlike puts if !failed? - puts "Mountains are again merely mountains" + zen_statement = "Mountains are again merely mountains" else - case (@pass_count % 10) + zen_statement = case (@pass_count % 10) when 0 - puts "mountains are merely mountains" + "mountains are merely mountains" when 1, 2 - puts "learn the rules so you know how to break them properly" + "learn the rules so you know how to break them properly" when 3, 4 - puts "remember that silence is sometimes the best answer" + "remember that silence is sometimes the best answer" when 5, 6 - puts "sleep is the best meditation" + "sleep is the best meditation" when 7, 8 - puts "when you lose, don't lose the lesson" + "when you lose, don't lose the lesson" else - puts "things are not what they appear to be: nor are they otherwise" + "things are not what they appear to be: nor are they otherwise" end end + zen_statement end end @@ -168,7 +182,7 @@ module EdgeCase def run_tests(accumulator) puts - puts "Thinking #{self}" + puts Color.green("Thinking #{self}") testmethods.each do |m| self.run_test(m, accumulator) if Koan.test_pattern =~ m.to_s end