Module: Vedeu::Terminal

Extended by:
Terminal
Included in:
Terminal
Defined in:
lib/vedeu/support/terminal.rb

Instance Method Summary collapse

Instance Method Details

#centreObject



75
76
77
# File 'lib/vedeu/support/terminal.rb', line 75

def centre
  [(height / 2), (width / 2)]
end

#clear_last_lineObject

:nocov:



71
72
73
# File 'lib/vedeu/support/terminal.rb', line 71

def clear_last_line
  Esc.set_position((height - 1), 1) + "\e[2K"
end

#consoleObject



91
92
93
# File 'lib/vedeu/support/terminal.rb', line 91

def console
  IO.console
end

#heightObject



83
84
85
# File 'lib/vedeu/support/terminal.rb', line 83

def height
  size.first
end

#initialize_screen(&block) ⇒ Object

:nocov:



48
49
50
51
52
53
54
# File 'lib/vedeu/support/terminal.rb', line 48

def initialize_screen(&block)
  output Esc.string 'reset'
  output Esc.string 'clear'
  output Esc.string 'hide_cursor'

  yield
end

#inputObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/vedeu/support/terminal.rb', line 25

def input
  if raw_mode?
    keys = console.getch
    if keys.ord == 27
      keys << console.read_nonblock(3) rescue nil
      keys << console.read_nonblock(2) rescue nil
    end
    keys

  else
    console.gets.chomp

  end
end

#open(mode, &block) ⇒ Object

:nocov:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/vedeu/support/terminal.rb', line 9

def open(mode, &block)
  @mode = mode

  if block_given?
    if raw_mode?
      console.raw    { initialize_screen { yield } }

    else
      console.cooked { initialize_screen { yield } }

    end
  end
ensure
  restore_screen
end

#output(stream = '') ⇒ Object

:nocov:



41
42
43
44
45
# File 'lib/vedeu/support/terminal.rb', line 41

def output(stream = '')
  console.print(stream)

  stream
end

#raw_mode?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/vedeu/support/terminal.rb', line 66

def raw_mode?
  @mode == :raw
end

#restore_screenObject



56
57
58
59
60
# File 'lib/vedeu/support/terminal.rb', line 56

def restore_screen
  output Esc.string 'show_cursor'
  output Esc.string 'reset'
  output clear_last_line
end

#set_cursor_modeObject



62
63
64
# File 'lib/vedeu/support/terminal.rb', line 62

def set_cursor_mode
  output Esc.string 'show_cursor' unless raw_mode?
end

#sizeObject



87
88
89
# File 'lib/vedeu/support/terminal.rb', line 87

def size
  console.winsize
end

#widthObject



79
80
81
# File 'lib/vedeu/support/terminal.rb', line 79

def width
  size.last
end