Module: Yosina::Transliterators::HiraKataTable

Included in:
HiraKata, HiraKataComposition, Jisx0201AndAlike
Defined in:
lib/yosina/transliterators/hira_kata_table.rb

Overview

Hiragana-Katakana mapping table

Constant Summary collapse

HIRAGANA_KATAKANA_TABLE =

Main hiragana-katakana table with [hiragana, katakana, halfwidth] structure

[
  # Vowels
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  # K-row
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  # S-row
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], 'ソ'],
  # T-row
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  [['', '', nil], ['', '', nil], ''],
  # N-row
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  # H-row
  [['', '', ''], ['', '', ''], ''],
  [['', '', ''], ['', '', ''], ''],
  [['', '', ''], ['', '', ''], ''],
  [['', '', ''], ['', '', ''], ''],
  [['', '', ''], ['', '', ''], ''],
  # M-row
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  # Y-row
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  # R-row
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  [['', nil, nil], ['', nil, nil], ''],
  # W-row
  [['', nil, nil], ['', '', nil], ''],
  [['', nil, nil], ['', '', nil], nil],
  [['', nil, nil], ['', '', nil], nil],
  [['', nil, nil], ['', '', nil], ''],
  [['', nil, nil], ['', nil, nil], '']
].freeze
HIRAGANA_KATAKANA_SMALL_TABLE =

Small kana table

[
  ['', '', ''],
  ['', '', ''],
  ['', '', ''],
  ['', '', ''],
  ['', '', ''],
  ['', '', ''],
  ['', '', ''],
  ['', '', ''],
  ['', '', ''],
  ['', '', nil],
  ['', '', nil],
  ['', '', nil],
  ["\u{1B132}", "\u{1B155}", nil],
  ["\u{1B150}", "\u{1B164}", nil],
  ["\u{1B151}", "\u{1B165}", nil],
  ["\u{1B152}", "\u{1B166}", nil]
].freeze
VOICED_CHARACTERS =
generate_voiced_characters.freeze
SEMI_VOICED_CHARACTERS =
generate_semi_voiced_characters.freeze

Class Method Summary collapse

Class Method Details

.generate_semi_voiced_charactersObject

Generate semi-voiced character mappings



107
108
109
110
111
112
113
114
# File 'lib/yosina/transliterators/hira_kata_table.rb', line 107

def self.generate_semi_voiced_characters
  result = []
  HIRAGANA_KATAKANA_TABLE.each do |hiragana, katakana, _|
    result << [hiragana[0], hiragana[2]] if hiragana[0] && hiragana[2]
    result << [katakana[0], katakana[2]] if katakana[0] && katakana[2]
  end
  result
end

.generate_voiced_charactersObject

Generate voiced character mappings



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/yosina/transliterators/hira_kata_table.rb', line 90

def self.generate_voiced_characters
  result = []
  HIRAGANA_KATAKANA_TABLE.each do |hiragana, katakana, _|
    result << [hiragana[0], hiragana[1]] if hiragana[0] && hiragana[1]
    result << [katakana[0], katakana[1]] if katakana[0] && katakana[1]
  end
  # Add iteration marks
  result.concat([
                  ['', ''],
                  ['', ''],
                  ['', ''],  # U+3031 -> U+3032 (vertical hiragana)
                  ['', '']   # U+3033 -> U+3034 (vertical katakana)
                ])
  result
end