Method: Textbringer::HangulInputMethod#handle_event

Defined in:
lib/textbringer/input_methods/hangul_input_method.rb

#handle_event(event) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/textbringer/input_methods/hangul_input_method.rb', line 35

def handle_event(event)
  return event if !event.is_a?(String)
  jamo = KEY_TO_COMPATIBILITY_JAMO[event]
  return event if jamo.nil?
  with_target_buffer do |buffer|
    prev = buffer.char_before
    if /[\u{3131}-\u{3183}\u{ac00}-\u{d7a3}]/.match?(prev) # jamo or syllables
      decomposed_prev, prev = decompose_prev(prev, jamo)
      if c = compose_hangul(prev, jamo)
        buffer.backward_delete_char
        c = decomposed_prev + c if decomposed_prev
        buffer.insert(c)
        Window.redisplay
        return nil
      end
    end
  end
  jamo
end