class ClientForPoslynx::FakePosTerminal::ConsoleUserInterface::UserTextLineFetcher

Attributes

entry_validator[R]
result_listener[R]
ui_context[R]

Public Class Methods

new(ui_context, entry_validator, result_listener) click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/user_text_line_fetcher.rb, line 12
def initialize(ui_context, entry_validator, result_listener)
  @ui_context       = ui_context
  @entry_validator  = entry_validator
  @result_listener = result_listener
end

Public Instance Methods

call() click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/user_text_line_fetcher.rb, line 18
def call
  save_cursor_position
  start_wait_loop
end
handle_valid_entry(entry) click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/user_text_line_fetcher.rb, line 41
def handle_valid_entry(entry)
  self.user_text_line_handler = nil
  restore_cursor_position
  result_listener.call entry
end
receive_line(line) click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/user_text_line_fetcher.rb, line 30
def receive_line(line)
  term_manipulator.raw_mode!
  entry = line.strip

  if valid_entry?( entry )
    handle_valid_entry entry
  else
    start_wait_loop
  end
end
start_wait_loop() click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/user_text_line_fetcher.rb, line 23
def start_wait_loop
  restore_cursor_position
  clear_to_end_of_line
  term_manipulator.interactive_mode!
  self.user_text_line_handler = method( :receive_line )
end
valid_entry?(entry) click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/user_text_line_fetcher.rb, line 47
def valid_entry?(entry)
  entry_validator.call( entry )
end