class Romajify::Converter
Class to convert kana to romaji
Constants
- DIGRAPHS
- KUNREI_DIGRAPHS
- KUNREI_MONOGRAPHS
- MONOGRAPHS
- NIHON_DIGRAPHS
- NIHON_MONOGRAPHS
Public Class Methods
hepburn(text, options = {})
click to toggle source
Convert kana to Hepburn romaji
@param text [String] Kana text @param options [Hash] Options @option options [Boolean] :upcase Whether to return upper case @option options [Boolean] :traditional Whether to convert to traditional hepburn @return [String] Romaji text
# File lib/romajify/converter.rb, line 148 def self.hepburn(text, options = {}) result_text = text.dup result_text.encode!(Encoding::UTF_8) result_text = romanize(result_text, DIGRAPHS) result_text = romanize(result_text, MONOGRAPHS) # Double consonants: 促音 result_text.gsub!(/[っッ]c/, 'tc') result_text.gsub!(/[っッ](.)/, '\1\1') # Syllabic n: 撥音 result_text.gsub!(/n([bmp])/, 'm\1') if options[:traditional] # Long vowels: 長音 result_text.gsub!(/oo(.+)/, 'o\1') result_text.gsub!(/ou/, 'o') result_text.gsub!(/uu/, 'u') result_text.upcase! if options[:upcase] result_text end
kunrei(text, options = {})
click to toggle source
Convert kana to Kunrei-shiki romaji
@param text [String] Kana text @param options [Hash] Options @option options [Boolean] :upcase Whether to return upper case @return [String] Romaji text
# File lib/romajify/converter.rb, line 203 def self.kunrei(text, options = {}) result_text = text.dup result_text.encode!(Encoding::UTF_8) result_text = romanize(result_text, DIGRAPHS.merge(KUNREI_DIGRAPHS)) result_text = romanize(result_text, MONOGRAPHS.merge(KUNREI_MONOGRAPHS)) # Double consonants: 促音 result_text.gsub!(/[っッ](.)/, '\1\1') # Long vowels: 長音 result_text.gsub!(/ou|oo/, 'o') result_text.gsub!(/uu/, 'u') result_text.upcase! if options[:upcase] result_text end
nihon(text, options = {})
click to toggle source
Convert kana to Nihon-shiki romaji
@param text [String] Kana text @param options [Hash] Options @option options [Boolean] :upcase Whether to return upper case @return [String] Romaji text
# File lib/romajify/converter.rb, line 178 def self.nihon(text, options = {}) result_text = text.dup result_text.encode!(Encoding::UTF_8) result_text = romanize(result_text, DIGRAPHS.merge(NIHON_DIGRAPHS)) result_text = romanize(result_text, MONOGRAPHS.merge(NIHON_MONOGRAPHS)) # Double consonants: 促音 result_text.gsub!(/[っッ](.)/, '\1\1') # Long vowels: 長音 result_text.gsub!(/ou|oo/, 'o') result_text.gsub!(/uu/, 'u') result_text.upcase! if options[:upcase] result_text end
Private Class Methods
romanize(text, chars)
click to toggle source
# File lib/romajify/converter.rb, line 222 def self.romanize(text, chars) result_text = text.dup chars.each do |kana, romaji| result_text.gsub!(/#{kana}/, romaji) end result_text end