Class: Yosina::Transliterators::Combined::Transliterator

Inherits:
BaseTransliterator show all
Defined in:
lib/yosina/transliterators/combined.rb

Overview

Transliterator for combined characters

Instance Method Summary collapse

Constructor Details

#initialize(_options = {}) ⇒ Transliterator

Initialize the transliterator with options

Parameters:

  • _options (Hash) (defaults to: {})

    Configuration options (currently unused)



14
15
16
17
# File 'lib/yosina/transliterators/combined.rb', line 14

def initialize(_options = {})
  # Options currently unused for combined transliterator
  super()
end

Instance Method Details

#call(input_chars) ⇒ Enumerable<Char>

Replace each combined character with its corresponding individual characters

Parameters:

  • input_chars (Enumerable<Char>)

    The characters to transliterate

Returns:

  • (Enumerable<Char>)

    The transliterated characters



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/yosina/transliterators/combined.rb', line 23

def call(input_chars)
  offset = 0

  Chars.enum do |y|
    input_chars.each do |char|
      replacement_array = COMBINED_MAPPINGS[char.c]
      if replacement_array
        replacement_array.each do |replacement_char|
          y << Char.new(c: replacement_char, offset: offset, source: char)
          offset += replacement_char.length
        end
      else
        y << Char.new(c: char.c, offset: offset, source: char.source)
        offset += char.c.length
      end
    end
  end
end