class Dotremap::Key
Constants
- KEYCODE_MAP
- PREFIX_EXPRESSION
- PREFIX_MAP
Public Class Methods
new(expression)
click to toggle source
# File lib/dotremap/key.rb, line 44 def initialize(expression) @expression = expression end
Public Instance Methods
to_s()
click to toggle source
# File lib/dotremap/key.rb, line 48 def to_s key_combination(@expression) end
Private Instance Methods
key_combination(raw_combination)
click to toggle source
# File lib/dotremap/key.rb, line 54 def key_combination(raw_combination) raw_prefixes, raw_key = split_key_combination(raw_combination) return key_expression(raw_key) if raw_prefixes.empty? prefixes = raw_prefixes.map { |raw_prefix| PREFIX_MAP[raw_prefix] } "#{key_expression(raw_key)}, #{prefixes.join(' | ')}" end
key_expression(raw_key)
click to toggle source
# File lib/dotremap/key.rb, line 62 def key_expression(raw_key) case raw_key when /^(#{KEYCODE_MAP.keys.map { |k| Regexp.escape(k) }.join('|')})$/ "KeyCode::#{KEYCODE_MAP[raw_key]}" else raw_key = raw_key.upcase unless raw_key.match(/^VK_/) "KeyCode::#{raw_key}" end end
split_key_combination(raw_combination)
click to toggle source
# File lib/dotremap/key.rb, line 72 def split_key_combination(raw_combination) prefixes = [] key = raw_combination.dup while key.match(/^#{PREFIX_EXPRESSION}/) key.gsub!(/^#{PREFIX_EXPRESSION}/) do prefixes << $1.gsub(/-$/, "") "" end end [prefixes, key] end