class Vice::Parser
Public Class Methods
new()
click to toggle source
# File lib/vice/parser.rb, line 2 def initialize @current_command = '' end
Public Instance Methods
parsechar_command(vice, current_buffer, char)
click to toggle source
# File lib/vice/parser.rb, line 38 def parsechar_command(vice, current_buffer, char) raise 'command parser called from wrong mode' unless vice.mode == :command return if char.is_a? Integer buffer = vice.buffers[current_buffer] if %i[mark_set mark_jump].include? @current_command Vice::KeyPress.public_send(@current_command, vice, buffer, char) @current_command = '' return end @current_command += char if !vice.config[:keys][@current_command].nil? command = vice.config[:keys][@current_command] if %i[mark_set mark_jump].include? command @current_command = command else Vice::KeyPress.public_send(command, vice, buffer) if Vice::KeyPress.respond_to? command.to_sym @current_command = '' end else keep_current = false vice.config[:keys].each do |k| keep_current = true if k[0].to_s.start_with? @current_command end @current_command = '' unless keep_current end end
parsechar_insert(vice, current_buffer, char)
click to toggle source
# File lib/vice/parser.rb, line 68 def parsechar_insert(vice, current_buffer, char) raise 'insert parser called from wrong mode' unless vice.mode == :insert buffer = vice.buffers[current_buffer] case char when 9 buffer.insert "\t" buffer.cursor.col += 1 when 10 # return buffer.newline buffer.cursor.line + 1 buffer.cursor_down when 27 # escape vice.mode = :command buffer.cursor_end_of_line when 127 # backspace if buffer.cursor.col.positive? buffer.cursor.col -= 1 buffer.rmchar end when Integer vice.prompt += char if char >= 0 && char <= 10 else buffer.insert char buffer.cursor.col += 1 end end
parsechar_prompt(vice, current_buffer, char)
click to toggle source
# File lib/vice/parser.rb, line 18 def parsechar_prompt(vice, current_buffer, char) raise 'prompt parser called from wrong mode' unless vice.mode == :prompt case char when 10 # enter Vice::Prompt.parse vice, vice.prompt, vice.buffers[current_buffer] vice.prompt = '' vice.mode = :command when 27 # escape vice.prompt = '' vice.mode = :command when 127 # backspace vice.prompt = vice.prompt[0..-2] when Integer vice.prompt += char if char >= 0 && char <= 10 else vice.prompt += char end end
parsekeypress(vice, buffer, char)
click to toggle source
# File lib/vice/parser.rb, line 6 def parsekeypress(vice, buffer, char) if vice.mode == :command parsechar_command vice, buffer, char elsif vice.mode == :insert parsechar_insert vice, buffer, char elsif vice.mode == :prompt parsechar_prompt vice, buffer, char else raise 'parsekeypress called with unknown mode' end end