Class: Vedeu::Input::Mapper
- Inherits:
-
Object
- Object
- Vedeu::Input::Mapper
- Defined in:
- lib/vedeu/input/mapper.rb
Overview
Maps keys to keymaps.
Instance Attribute Summary collapse
- #key ⇒ String|Symbol readonly protected
- #repository ⇒ Vedeu::Repository readonly protected
Class Method Summary collapse
-
.keypress(key = nil, name = nil) ⇒ Boolean
Takes a key as a keypress and sends it to registered keymaps.
-
.valid?(key = nil, name = nil) ⇒ Boolean
Checks a key is valid; i.e.
Instance Method Summary collapse
-
#global_key? ⇒ Boolean
private
Is the key a global key?.
-
#initialize(key = nil, name = nil, repository = nil) ⇒ Vedeu::Input::Mapper
constructor
Returns a new instance of Vedeu::Input::Mapper.
-
#key_defined?(named = name) ⇒ Boolean
private
Is the key defined in the named keymap?.
-
#keymap(named = name) ⇒ Vedeu::Input::Keymap
private
Fetch the named keymap from the repository.
-
#keymap?(named = name) ⇒ Boolean
private
Does the keymaps repository have the named keymap already registered?.
-
#keypress ⇒ Boolean
Returns a boolean indicating that the key is registered to the current keymap, or the global keymap.
-
#name ⇒ String|NilClass
(also: #interface)
private
With a name, we check the keymap with that name, otherwise we use the name of the interface currently in focus.
-
#valid? ⇒ Boolean
Returns a boolean indicating that the key is not registered to the current keymap, or the global keymap.
Constructor Details
#initialize(key = nil, name = nil, repository = nil) ⇒ Vedeu::Input::Mapper
Returns a new instance of Vedeu::Input::Mapper.
43 44 45 46 47 |
# File 'lib/vedeu/input/mapper.rb', line 43 def initialize(key = nil, name = nil, repository = nil) @key = key @name = name @repository = repository || Vedeu.keymaps end |
Instance Attribute Details
#key ⇒ String|Symbol (readonly, protected)
79 80 81 |
# File 'lib/vedeu/input/mapper.rb', line 79 def key @key end |
#repository ⇒ Vedeu::Repository (readonly, protected)
83 84 85 |
# File 'lib/vedeu/input/mapper.rb', line 83 def repository @repository end |
Class Method Details
.keypress(key = nil, name = nil) ⇒ Boolean
Takes a key as a keypress and sends it to registered keymaps. If found, the associated action is fired, otherwise, we move to the next keymap or return false.
18 19 20 21 22 23 24 |
# File 'lib/vedeu/input/mapper.rb', line 18 def self.keypress(key = nil, name = nil) Vedeu.trigger(:key, key) return false unless key new(key, name).keypress end |
.valid?(key = nil, name = nil) ⇒ Boolean
Checks a key is valid; i.e. not already registered to a keymap. When the key is registered, then the key is invalid and cannot be used again.
31 32 33 34 35 |
# File 'lib/vedeu/input/mapper.rb', line 31 def self.valid?(key = nil, name = nil) return false unless key new(key, name).valid? end |
Instance Method Details
#global_key? ⇒ Boolean (private)
Is the key a global key?
90 91 92 |
# File 'lib/vedeu/input/mapper.rb', line 90 def global_key? key_defined?('_global_') end |
#key_defined?(named = name) ⇒ Boolean (private)
Is the key defined in the named keymap?
98 99 100 |
# File 'lib/vedeu/input/mapper.rb', line 98 def key_defined?(named = name) keymap?(named) && keymap(named).key_defined?(key) end |
#keymap(named = name) ⇒ Vedeu::Input::Keymap (private)
Fetch the named keymap from the repository.
106 107 108 |
# File 'lib/vedeu/input/mapper.rb', line 106 def keymap(named = name) repository.find(named) end |
#keymap?(named = name) ⇒ Boolean (private)
Does the keymaps repository have the named keymap already registered?
114 115 116 |
# File 'lib/vedeu/input/mapper.rb', line 114 def keymap?(named = name) repository.registered?(named) end |
#keypress ⇒ Boolean
Returns a boolean indicating that the key is registered to the current keymap, or the global keymap.
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/vedeu/input/mapper.rb', line 53 def keypress return false unless key Vedeu.log(type: :input, message: "Key detected: #{key.inspect}") return true if key_defined? && keymap.use(key) return true if global_key? && keymap('_global_').use(key) false end |
#name ⇒ String|NilClass (private) Also known as: interface
With a name, we check the keymap with that name, otherwise we use the name of the interface currently in focus.
122 123 124 |
# File 'lib/vedeu/input/mapper.rb', line 122 def name @name || Vedeu.focus end |
#valid? ⇒ Boolean
Returns a boolean indicating that the key is not registered to the current keymap, or the global keymap.
69 70 71 72 73 |
# File 'lib/vedeu/input/mapper.rb', line 69 def valid? return false if !key || key_defined? || global_key? true end |