Class: Yosina::Transliterators::IdeographicAnnotations::Transliterator

Inherits:
BaseTransliterator
  • Object
show all
Defined in:
lib/yosina/transliterators/ideographic_annotations.rb

Overview

Transliterator for ideographic_annotations

Instance Method Summary collapse

Constructor Details

#initialize(_options = {}) ⇒ Transliterator

Initialize the transliterator with options

Parameters:

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

    Configuration options (currently unused)



30
31
32
33
# File 'lib/yosina/transliterators/ideographic_annotations.rb', line 30

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

Instance Method Details

#call(input_chars) ⇒ Enumerable<Char>

Replace ideographic annotation marks used in traditional translation

Parameters:

  • input_chars (Enumerable<Char>)

    The characters to transliterate

Returns:

  • (Enumerable<Char>)

    The transliterated characters



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/yosina/transliterators/ideographic_annotations.rb', line 39

def call(input_chars)
  offset = 0

  result = input_chars.filter_map do |char|
    replacement = IDEOGRAPHIC_ANNOTATIONS_MAPPINGS[char.c]
    c = if replacement
          # Skip empty replacements (character removal)
          next if replacement.empty?

          Char.new(c: replacement, offset: offset, source: char)
        else
          char.with_offset(offset)
        end
    offset += c.c.length
    c
  end

  class << result
    include Yosina::Chars
  end

  result
end