Class: Yosina::Transliterators::KanjiOldNew::Transliterator

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

Overview

Transliterator for kanji_old_new

Instance Method Summary collapse

Constructor Details

#initialize(_options = {}) ⇒ Transliterator

Initialize the transliterator with options

Parameters:

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

    Configuration options (currently unused)



1094
1095
1096
1097
# File 'lib/yosina/transliterators/kanji_old_new.rb', line 1094

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

Instance Method Details

#call(input_chars) ⇒ Enumerable<Char>

Replace old-style kanji with modern equivalents

Parameters:

  • input_chars (Enumerable<Char>)

    The characters to transliterate

Returns:

  • (Enumerable<Char>)

    The transliterated characters



1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
# File 'lib/yosina/transliterators/kanji_old_new.rb', line 1103

def call(input_chars)
  offset = 0

  result = input_chars.filter_map do |char|
    replacement = KANJI_OLD_NEW_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