Method: Reline::Config#key_notation_to_code

Defined in:
lib/reline/config.rb

#key_notation_to_code(notation) ⇒ Object



356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
# File 'lib/reline/config.rb', line 356

def key_notation_to_code(notation)
  case notation
  when /\\(?:C|Control)-([A-Za-z_])/
    (1 + $1.downcase.ord - ?a.ord)
  when /\\(?:M|Meta)-([0-9A-Za-z_])/
    modified_key = $1
    case $1
    when /[0-9]/
      ?\M-0.bytes.first + (modified_key.ord - ?0.ord)
    when /[A-Z]/
      ?\M-A.bytes.first + (modified_key.ord - ?A.ord)
    when /[a-z]/
      ?\M-a.bytes.first + (modified_key.ord - ?a.ord)
    end
  when /\\(?:C|Control)-(?:M|Meta)-[A-Za-z_]/, /\\(?:M|Meta)-(?:C|Control)-[A-Za-z_]/
  # 129 M-^A
  when /\\(\d{1,3})/ then $1.to_i(8) # octal
  when /\\x(\h{1,2})/ then $1.to_i(16) # hexadecimal
  when "\\e" then ?\e.ord
  when "\\\\" then ?\\.ord
  when "\\\"" then ?".ord
  when "\\'" then ?'.ord
  when "\\a" then ?\a.ord
  when "\\b" then ?\b.ord
  when "\\d" then ?\d.ord
  when "\\f" then ?\f.ord
  when "\\n" then ?\n.ord
  when "\\r" then ?\r.ord
  when "\\t" then ?\t.ord
  when "\\v" then ?\v.ord
  else notation.ord
  end
end