From 36f93c6c636789339353f012da1a1b65fd000fbd Mon Sep 17 00:00:00 2001 From: Jim Weirich Date: Thu, 26 Aug 2010 07:58:28 -0400 Subject: [PATCH] Updated koans with changed from src. --- koans/edgecase.rb | 58 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/koans/edgecase.rb b/koans/edgecase.rb index 71a70b9..add1aa7 100644 --- a/koans/edgecase.rb +++ b/koans/edgecase.rb @@ -43,6 +43,28 @@ class Object end module EdgeCase + + module Color + #shamelessly stolen (and modified) from redgreen + COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33, :blue => 34, :magenta => 35, :cyan => 36 } + + COLORS.each do |color, value| + class_eval "def self.#{color}(string); colorize(string, #{value}); end" + end + + def self.colorize(string, color_value) + if ENV['NO_COLOR'] + string + else + color(color_value) + string + color(COLORS[:clear]) + end + end + + def self.color(color_value) + "\e[#{color_value}m" + end + end + class Sensei attr_reader :failure, :failed_test @@ -67,9 +89,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 +109,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 +135,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 +192,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