Class: Textbringer::Keymap

Inherits:
Object
  • Object
show all
Defined in:
lib/textbringer/keymap.rb

Instance Method Summary collapse

Constructor Details

#initializeKeymap



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_keyObject



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