Class: Yosina::Transliterators::HiraKata::Transliterator

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

Overview

Transliterator for hiragana/katakana conversion

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Transliterator

Initialize the transliterator with options

Parameters:

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

    Configuration options

Options Hash (options):

  • :mode (Symbol)

    Either :hira_to_kata or :kata_to_hira



26
27
28
29
30
# File 'lib/yosina/transliterators/hira_kata.rb', line 26

def initialize(options = {})
  super()
  @mode = options[:mode] || :hira_to_kata
  @mapping_table = HiraKata.build_mapping_table(@mode)
end

Instance Attribute Details

#modeObject (readonly)

Returns the value of attribute mode.



20
21
22
# File 'lib/yosina/transliterators/hira_kata.rb', line 20

def mode
  @mode
end

Instance Method Details

#call(input_chars) ⇒ Enumerable<Char>

Convert between hiragana and katakana

Parameters:

  • input_chars (Enumerable<Char>)

    The characters to transliterate

Returns:

  • (Enumerable<Char>)

    The transliterated characters



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/yosina/transliterators/hira_kata.rb', line 36

def call(input_chars)
  Chars.enum do |y|
    input_chars.each do |char|
      if char.sentinel?
        y << char
        break
      end

      mapped = @mapping_table[char.c]
      y << if mapped
             Char.new(c: mapped, offset: char.offset, source: char)
           else
             char
           end
    end
  end
end