Commit 6c5d043

mokha <mokha@cisco.com>
2018-03-07 02:11:17
add rainbow command.
1 parent 64055d4
Changed files (2)
lib/xsay.rb
@@ -1,5 +1,6 @@
 require "xsay/version"
 require "thor"
+require "colorize"
 
 module Xsay
   class CLI < Thor
@@ -23,21 +24,33 @@ module Xsay
 
     desc "random <message>", "xsay random hello"
     def random(*args)
-      render(args, IO.read(ANIMALS.shuffle.sample))
+      render(args, IO.read(ANIMALS.shuffle.sample), colour: String.colors.sample)
+    end
+
+    desc "rainbow <message>", "xsay rainbow hello world"
+    def rainbow(*args)
+      render(args, IO.read(ANIMALS.shuffle.sample), colour: :rainbow)
     end
 
     private
 
-    def render(message, template)
+    def render(message, template, colour: :default)
       message = message.join(' ') if message.respond_to?(:join)
       line_break = "-" * message.length
-      say <<-MESSAGE
+      result = <<-MESSAGE
   #{line_break}
 < #{message} >
   #{line_break}
 
 #{template}
       MESSAGE
+      if colour == :rainbow
+        result.each_char.each_with_index do |x, i|
+          print x.colorize(String.colors[i % String.colors.size])
+        end
+      else
+        puts result.colorize(colour)
+      end
     end
   end
 end
xsay.gemspec
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
   spec.require_paths = ["lib"]
 
   spec.add_dependency "thor", "~> 0.20"
+  spec.add_dependency "colorize", "~> 0.8"
   spec.add_development_dependency "bundler", "~> 1.16"
   spec.add_development_dependency "rake", "~> 10.0"
   spec.add_development_dependency "rspec", "~> 3.0"