diff options
| -rw-r--r-- | lib/xsay/render.rb | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/lib/xsay/render.rb b/lib/xsay/render.rb index b84b2ba..4b542ab 100644 --- a/lib/xsay/render.rb +++ b/lib/xsay/render.rb @@ -15,13 +15,23 @@ module Xsay def render(message, template) message = message.join(' ') if message.respond_to?(:join) line_break = "-" * message.length - move = distance > 0 - distance.downto(0) do |n| - system 'clear' if move - spaces = " " * n + distance.downto(0) do |frame| + draw(message, template, line_break, frame) + end + 0.upto(distance) do |frame| + draw(message, template, line_break, frame) + end + nil + end + + private + + def draw(message, template, line_break, frame) + system 'clear' if move? + spaces = " " * frame result = <<-MESSAGE #{line_break} -< #{n.even? ? message : ' ' * message.length} > +< #{frame.even? ? message : ' ' * message.length} > #{line_break} #{template.gsub(/^/, "#{spaces}")} @@ -33,10 +43,11 @@ module Xsay else puts result.colorize(colour) end - sleep speed if move - end - nil + sleep speed if move? end + def move? + distance > 0 + end end end |
