summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormokha <mokha@cisco.com>2018-03-13 19:06:00 -0600
committermokha <mokha@cisco.com>2018-03-13 19:06:00 -0600
commit01d2842510249334ad2e8b51fbf68e63392c8bf2 (patch)
tree5795fc1d8a2740933a2cef88b5b201ad644229e7
parent80aebb773bb0d3e1d8420b6ab3cd9e83f83489a6 (diff)
add a distance parameter to shuffle the character back and forth.
-rw-r--r--lib/xsay.rb25
1 files changed, 16 insertions, 9 deletions
diff --git a/lib/xsay.rb b/lib/xsay.rb
index ac9157f..cd2ccc7 100644
--- a/lib/xsay.rb
+++ b/lib/xsay.rb
@@ -6,6 +6,7 @@ module Xsay
class CLI < Thor
ANIMALS=Dir[File.expand_path("xsay/templates/*.template", File.dirname(__FILE__))]
class_option :colour, default: :default, required: false
+ class_option :distance, default: 1, required: false, type: :numeric
ANIMALS.each do |filename|
animal = File.basename(filename).split(".")[0]
@@ -31,22 +32,28 @@ module Xsay
private
- def render(message, template, colour: options[:colour].to_sym)
+ def render(message, template, colour: options[:colour].to_sym, distance: options[:distance])
message = message.join(' ') if message.respond_to?(:join)
line_break = "-" * message.length
- result = <<-MESSAGE
+ move = distance > 1
+ distance.times do |n|
+ system 'clear' if move
+ spaces = " " * n
+ 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])
+#{template.gsub(/^/, "#{spaces}")}
+ MESSAGE
+ if colour == :rainbow
+ result.each_char.each_with_index do |x, i|
+ print x.colorize(String.colors[i % String.colors.size])
+ end
+ else
+ say result.colorize(colour)
end
- else
- say result.colorize(colour)
+ sleep 1 if move
end
nil
end