Class: Flowterm

Inherits:
Object
  • Object
show all
Defined in:
lib/flowterm.rb,
lib/flowterm/version.rb

Constant Summary collapse

VERSION =
"0.1.1"

Instance Method Summary collapse

Constructor Details

#initialize(argv, input) ⇒ Flowterm

Returns a new instance of Flowterm.



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/flowterm.rb', line 6

def initialize(argv, input)
  @sleep = 1 / 25.0
  @trap = true

  opt = OptionParser.new
  opt.on('--speed=speed') { |v| @sleep = 1 / v.to_f }
  opt.on('--[no-]trap') { |v| @trap = v }
  opt.parse!(argv)

  Signal.trap(:INT, nil) if @trap
  @str = input.read
end

Instance Method Details

#render(str, col_offset) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/flowterm.rb', line 31

def render(str, col_offset)
  col = Curses.cols - str.each_line.max_by(&:size).size + col_offset
  line = (Curses.lines - str.each_line.count) / 2

  Curses.clear
  str.each_line.with_index do |str_line, index|
    Curses.setpos(line + index, [col, 0].max)
    str_line = str_line[-col..-1] || '' if col < 0
    Curses.addstr(str_line)
  end
  Curses.refresh
end

#runObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/flowterm.rb', line 19

def run
  Curses.init_screen
  begin
    Curses.cols.times do |idx|
      render(@str, -idx)
      sleep @sleep
    end
  ensure
    Curses.close_screen
  end
end