class Rbtclk::Clock

Public Class Methods

new(font: "clb8x8", format: "%X", color: "black") click to toggle source
# File lib/rbtclk/clock.rb, line 14
def initialize(font: "clb8x8", format: "%X", color: "black")
  @artii = Artii::Base.new(font: font)
  @format = format
  @color = color
end

Public Instance Methods

show() click to toggle source
# File lib/rbtclk/clock.rb, line 20
def show
  Curses.init_screen
  Curses.start_color
  Curses.use_default_colors
  Curses.init_pair(1, translate(@color), -1)
  Curses.curs_set(0)

  begin
    view_thread = Thread.new do
      loop do
        refresh
        sleep(1)
      end
    end

    input_thread = Thread.new do
      loop do
        case Curses.getch
        when "q"
          Thread.kill(view_thread)
          Thread.kill(input_thread)
        end
      end
    end

    view_thread.join
    input_thread.join
  ensure
    Curses.close_screen
  end
end

Private Instance Methods

refresh() click to toggle source
# File lib/rbtclk/clock.rb, line 53
def refresh
  Curses.clear
  Curses.setpos(0, 0)
  Curses.attron(Curses.color_pair(1))
  Curses.addstr(@artii.asciify(Time.now.strftime(@format)))
  Curses.refresh
end