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
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
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)
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
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