Class: Textbringer::Keymap
- Inherits:
-
Object
- Object
- Textbringer::Keymap
- Defined in:
- lib/textbringer/keymap.rb
Instance Method Summary collapse
- #define_key(key, command) ⇒ Object (also: #[])
- #handle_undefined_key ⇒ Object
-
#initialize ⇒ Keymap
constructor
A new instance of Keymap.
- #lookup(key_sequence) ⇒ Object
Constructor Details
#initialize ⇒ Keymap
7 8 9 |
# File 'lib/textbringer/keymap.rb', line 7 def initialize @map = {} end |
Instance Method Details
#define_key(key, command) ⇒ Object Also known as: []
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/textbringer/keymap.rb', line 11 def define_key(key, command) key_sequence = kbd(key) case key_sequence.size when 0 raise ArgumentError, "Empty key" when 1 @map[key_sequence.first] = command else k, *ks = key_sequence (@map[k] ||= Keymap.new).define_key(ks, command) end end |
#handle_undefined_key ⇒ Object
38 39 40 |
# File 'lib/textbringer/keymap.rb', line 38 def handle_undefined_key @map.default_proc = Proc.new { |h, k| yield(k) } end |
#lookup(key_sequence) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/textbringer/keymap.rb', line 26 def lookup(key_sequence) case key_sequence.size when 0 raise ArgumentError, "Empty key" when 1 @map[key_sequence.first] else k, *ks = key_sequence @map[k]&.lookup(ks) end end |