class DigiMoji::CLI

Public Instance Methods

clear_screen() click to toggle source
# File lib/digi_moji/cli.rb, line 76
def clear_screen
  print "\e[?25l" # hide cursor
  print "\e[2J"   # clear screen
  print "\e[2;0H"
end
down_symbolize_key(opts) click to toggle source
# File lib/digi_moji/cli.rb, line 61
def down_symbolize_key(opts)
  opts.inject({}) do |h, (k, v)|
    h[k.to_s.downcase.intern] = v; h
  end
end
new(word) click to toggle source
# File lib/digi_moji/cli.rb, line 11
def new(word)
  opts = down_symbolize_key(options)
  str = String.new(word, opts)
  puts str
rescue => e
  puts "'#{word}' includes undefined character(s)."
end
reset_screen() click to toggle source
# File lib/digi_moji/cli.rb, line 82
def reset_screen
  print "\e[?25h" # show cursor
end
time() click to toggle source
# File lib/digi_moji/cli.rb, line 20
def time
  opts = down_symbolize_key(options)
  trap(:INT) { exit 0 }
  loop do
    time = time_format(Time.at(Time.now.to_i))
    str = String.new(time, opts)
    clear_screen
    puts str
    sleep 1.0
  end
ensure
  reset_screen
end
time_format(t) click to toggle source
# File lib/digi_moji/cli.rb, line 86
def time_format(t)
  "%02d:%02d:%02d" % [t.hour, t.min, t.sec]
end
time_in_sec(time, unit) click to toggle source
# File lib/digi_moji/cli.rb, line 67
def time_in_sec(time, unit)
  case unit
  when 'sec' then time.to_i
  when 'min' then time.to_i * 60
  when 'hour' then time.to_i * 60 * 60
  else time.to_i
  end
end
timer(sec) click to toggle source
# File lib/digi_moji/cli.rb, line 38
def timer(sec)
  opts = down_symbolize_key(options)
  message, message_color = opts.delete(:message), opts.delete(:message_color)
  unit = opts.delete(:unit)
  t = Time.new('00:00:00') + time_in_sec(sec, unit)
  trap(:INT) { exit 0 }
  loop do
    time = time_format(t)
    str = String.new(time, opts)
    clear_screen
    puts str
    sleep 1.0
    break if [t.hour, t.min, t.sec].all?(&:zero?)
    t -= 1
  end
  clear_screen
  puts String.new(message, fg:message_color)
  sleep 2.0
ensure
  reset_screen
end