class Textbringer::InputMethod

Public Class Methods

find(name) click to toggle source
# File lib/textbringer/input_method.rb, line 19
def self.find(name)
  class_name = name.split(/_/).map(&:capitalize).join + "InputMethod"
  Textbringer.const_get(class_name).new
rescue NameError
  raise EditorError, "No such input method: #{name}"
end
inherited(subclass) click to toggle source
# File lib/textbringer/input_method.rb, line 8
def self.inherited(subclass)
  name = subclass.name.sub(/Textbringer::/, "").sub(/InputMethod/, "").
    gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z])/, '\1_\2').
    downcase
  @@list.push(name)
end
list() click to toggle source
# File lib/textbringer/input_method.rb, line 15
def self.list
  @@list
end
new() click to toggle source
# File lib/textbringer/input_method.rb, line 26
def initialize
  @enabled = false
  @skip_next_event = false
end

Public Instance Methods

disable() click to toggle source
# File lib/textbringer/input_method.rb, line 35
def disable
  @enabled = false
end
enabled?() click to toggle source
# File lib/textbringer/input_method.rb, line 39
def enabled?
  @enabled
end
filter_event(event) click to toggle source
# File lib/textbringer/input_method.rb, line 43
def filter_event(event)
  if @enabled
    if event == "\e"
      @skip_next_event = true
      event
    elsif @skip_next_event
      @skip_next_event = false
      event
    else
      handle_event(event)
    end
  else
    event
  end
end
handle_event(event) click to toggle source
# File lib/textbringer/input_method.rb, line 59
def handle_event(event)
  raise EditorError, "subclass must override InputMethod#handle_event"
end
toggle() click to toggle source
# File lib/textbringer/input_method.rb, line 31
def toggle
  @enabled = !@enabled
end