class Pepin::CursesView::PromptView

Attributes

cursor[R]

Public Class Methods

new(height, width, y, x, query:, prompt:) click to toggle source
# File lib/pepin/curses_view.rb, line 13
def initialize(height, width, y, x, query:, prompt:)
  @query, @prompt_string = query, prompt
  @window = Curses::Window.new(height, width, y, x)
  @cursor = cursor_range.first

  @window.keypad true

  @query.add_observer -> { render }, :call
end

Public Instance Methods

input_char() click to toggle source
# File lib/pepin/curses_view.rb, line 23
def input_char
  @window.getch
end
move_cursor(value) click to toggle source
# File lib/pepin/curses_view.rb, line 27
def move_cursor(value)
  self.cursor = cursor + value
end
move_cursor_to_first() click to toggle source
# File lib/pepin/curses_view.rb, line 31
def move_cursor_to_first
  self.cursor = cursor_range.first
end
move_cursor_to_last() click to toggle source
# File lib/pepin/curses_view.rb, line 35
def move_cursor_to_last
  self.cursor = cursor_range.last
end
render() click to toggle source
# File lib/pepin/curses_view.rb, line 39
def render
  @window.setpos 0, 0
  @window.addstr @prompt_string + @query.to_s
  @window.clrtoeol
end

Private Instance Methods

cursor=(pos) click to toggle source
# File lib/pepin/curses_view.rb, line 51
def cursor=(pos)
  return false unless cursor_range.include?(pos)

  @cursor = pos

  @window.setpos 0, @prompt_string.length + pos
end
cursor_range() click to toggle source
# File lib/pepin/curses_view.rb, line 47
def cursor_range
  0..@query.length
end