Module: KanaRow

Included in:
String
Defined in:
lib/kana_row.rb,
lib/kana_row/version.rb

Constant Summary collapse

KANAS_MAP =
{
  'ア' => 'アイウエオァィゥェォ',
  'カ' => 'カキクケコ',
  'サ' => 'サシスセソ',
  'タ' => 'タチツテト',
  'ナ' => 'ナニヌネノ',
  'ハ' => 'ハヒフヘホ',
  'マ' => 'マミムメモ',
  'ヤ' => 'ヤユヨャュョ',
  'ラ' => 'ラリルレロ',
  'ワ' => 'ワヰヱヲ',
  'ガ' => 'ガギグゲゴ',
  'ザ' => 'ザジズゼゾ',
  'ダ' => 'ダヂヅデド',
  'バ' => 'バビブベボ',
  'パ' => 'パピプペポ',
}.transform_values{|v| v.split('') }.freeze
SPECIAL_KANAS_MAP =
{
  'ア' => 'ヴ',
  'ワ' => 'ン',
}.transform_values{|v| v.split('') }.freeze
MARKED_KANA_ROWS =
{
  'ガ' => 'カ',
  'ザ' => 'サ',
  'ダ' => 'タ',
  'バ' => 'ハ',
  'パ' => 'ハ',
}.freeze
VERSION =
"0.1.1"

Instance Method Summary collapse

Instance Method Details

#kana_row(marked_to_plain: true, include_special: true) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/kana_row.rb', line 36

def kana_row(marked_to_plain: true, include_special: true)
  kana = self.chr.han_to_zen
  return unless kana.kana?

  if is_hiragana = kana.hiragana?
    kana = kana.katakana
  end

  row = kanas_map(include_special: include_special).find{|_, v| v.include?(kana) }&.first
  row = MARKED_KANA_ROWS.fetch(row, row) if marked_to_plain
  row = row&.hiragana if is_hiragana

  row
end