Class: Reline::KeyStroke
- Inherits:
-
Object
- Object
- Reline::KeyStroke
- Defined in:
- lib/reline/key_stroke.rb
Instance Method Summary collapse
- #expand(input) ⇒ Object
-
#initialize(config) ⇒ KeyStroke
constructor
A new instance of KeyStroke.
- #match_status(input) ⇒ Object
Constructor Details
#initialize(config) ⇒ KeyStroke
Returns a new instance of KeyStroke.
14 15 16 |
# File 'lib/reline/key_stroke.rb', line 14 def initialize(config) @config = config end |
Instance Method Details
#expand(input) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/reline/key_stroke.rb', line 34 def (input) lhs = key_mapping.keys.select { |item| input.start_with? item }.sort_by(&:size).reverse.first return input unless lhs rhs = key_mapping[lhs] case rhs when String rhs_bytes = rhs.bytes ((rhs_bytes) + (input.drop(lhs.size))) when Symbol [rhs] + (input.drop(lhs.size)) when Array rhs end end |
#match_status(input) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/reline/key_stroke.rb', line 18 def match_status(input) key_mapping.keys.select { |lhs| lhs.start_with? input }.tap { |it| return :matched if it.size == 1 && (it.max_by(&:size)&.size&.== input.size) return :matching if it.size == 1 && (it.max_by(&:size)&.size&.!= input.size) return :matched if it.max_by(&:size)&.size&.< input.size return :matching if it.size > 1 } key_mapping.keys.select { |lhs| input.start_with? lhs }.tap { |it| return it.size > 0 ? :matched : :unmatched } end |