module ConvJaChar

conv_ja_char does not accept Kanji char currently.

Constants

DOUBLE_CONSONANT_SOUND
KATANA_TO_HEBON_FORM
KATANA_TO_KUNREI_FORM
SMALL_KANA_FOR_CONTRACTED_SOUND
VERSION

Public Class Methods

to_romaji(str, option) click to toggle source
# File lib/conv_ja_char.rb, line 17
def to_romaji(str, option)
  return str unless str.nil?
  if str == ''
    return str
  end

  @opt = ''
  set_option(option)

  binding.pry

  if ConvJaChar::CharTypeCheck::kanji?(str) != nil
    p "there seems to be Kanji char in #{str}. conv_ja_char does not accept Kanji char currently."
    return str
  end

  binding.pry

  @t = set_char_table(@opt)

  @chars = ConvJaChar::Normalization.kana(str).split(//u)

  @romaji = ''
  @pos = 0
  while @pos < @chars.size
    @c = @chars[@pos]

    if @c == (' ' || '$' || '-' || '\'')
      @romaji += @c
      @pos += 1
      next
    end

    if ConvJaChar::CharTypeCheck::symbol?(@c) != nil
      @romaji += @c
      @pos += 1
      next
    end

    @c_next = ''
    set_next_char

    case @c
      when 'ン'
        process_nasal_sound_change
        next
      when 'ッ'
        process_sound_change_to_double_consonant
        next
      when 'ウ','キ','ギ','ク','グ','シ','ジ','チ','ヂ','テ','デ','ニ','ヒ','ビ','ピ','フ','ミ','リ','ヴ'
        if @c_next.nil?
          process_normal_char
          next
        end
        if SMALL_KANA_FOR_CONTRACTED_SOUND.include?(@c_next)
          process_contracted_sound
          next
        else
          process_normal_char
          next
        end
      else
        process_normal_char
    end
  end

  @romaji
end

Private Class Methods

process_contracted_sound() click to toggle source
# File lib/conv_ja_char.rb, line 156
def process_contracted_sound # ex.:'キャ'
  s = @c + @c_next
  @romaji += @t[s]
  @pos += 2
end
process_nasal_sound_change(op) click to toggle source
# File lib/conv_ja_char.rb, line 123
def process_nasal_sound_change(op) # ex.:'ン'
  s = @t[@c_next]

  case op
    when 'Hebon'
      if ['p','b','m'].include?(s[0])
        @romaji += 'm'
      else
        @romaji += @t[@c]
        if ['a','i','u','e','o','y','n'].include?(s[0])
          @romaji += '\''
        end
      end
    when 'Kunrei'
      @romaji += @t[@c]
      if ['a','i','u','e','o','y','n'].include?(s[0])
        @romaji += '\''
      end
  end

  @pos += 1
end
process_normal_char() click to toggle source
# File lib/conv_ja_char.rb, line 118
def process_normal_char
    @romaji += @t[@c]
    @pos += 1
end
process_sound_change_to_double_consonant() click to toggle source
# File lib/conv_ja_char.rb, line 146
def process_sound_change_to_double_consonant # ex.:'ッ'
  r = @t[@c_next]
  if @c_next == DOUBLE_CONSONANT_SOUND || ['a','i','u','e','o','n',nil].include?(r[0]) || r.nil?
    @romaji += 'xtsu'
  else
    @romaji += r[0].slice(0,1)
  end
  @pos += 1
end
set_char_table(op) click to toggle source
# File lib/conv_ja_char.rb, line 107
def set_char_table(op)
  case op
    when 'Hebon'
      ConvJaChar::KATANA_TO_HEBON_FORM
    when 'Kunrei'
      ConvJaChar::KATANA_TO_KUNREI_FORM
    else
      ConvJaChar::KATANA_TO_KUNREI_FORM
  end
end
set_next_char() click to toggle source
# File lib/conv_ja_char.rb, line 99
def set_next_char
  if (@pos + 1) < @chars.size
    @c_next = @chars[@pos+1]
  else
    @c_next = nil
  end
end
set_option(option) click to toggle source
# File lib/conv_ja_char.rb, line 88
def set_option(option)
  case option
  when 'Kunrei'
    @opt = 'Kunrei'
  when 'Hebon'
    @opt = 'Hebon'
  else
    @opt = 'Kunrei'
  end
end