Class: Marvi::Renderer::Curses

Inherits:
Object
  • Object
show all
Defined in:
lib/marvi/renderer/curses.rb

Constant Summary collapse

COLOR_PAIRS =
{
  cyan:          1,
  green:         2,
  yellow:        3,
  magenta:       4,
  white:         5,
  green_on_dark: 6,
  cyan_on_dark:  7
}.freeze
ITALIC_ATTR =
(::Curses::A_ITALIC) ? ::Curses::A_ITALIC : 0)
FILE_POLL_INTERVAL_MS =
500

Instance Method Summary collapse

Instance Method Details

#render(markdown, file: nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/marvi/renderer/curses.rb', line 23

def render(markdown, file: nil)
  @file     = file
  @markdown = markdown
  @lines    = ASTWalker.new.walk(markdown)
  @scroll   = 0
  mark_reloaded

  init_curses_state
  draw

  catch(:quit) do
    loop do
      key = ::Curses.getch
      if key.nil? || key == -1
        check_file_updated
      else
        handle_key(key)
      end
    end
  end
ensure
  ::Curses.close_screen
end