romkan-0.4.0/0000755000004100000410000000000012250212152013022 5ustar www-datawww-dataromkan-0.4.0/doc/0000755000004100000410000000000012250212152013567 5ustar www-datawww-dataromkan-0.4.0/doc/romkan.en.rd0000644000004100000410000000334212250212152016010 0ustar www-datawww-data=begin index:Ej = Ruby/Romkan: a Romaji <-> Kana conversion library for Ruby Last Modified: 2002-02-12 -- Ruby/Romkan is a Romaji <-> Kana conversion library for Ruby. It can convert a Japanese Romaji string to a Japanese Kana string or vice versa. Tha latest version of Ruby/Romkan is available at (()) . == API --- String#to_kana Convert a Kunrei or Hepburn Romaji string into a Kana string. --- String#to_roma Conver a Hiragana string into a Hepburn Romaji string. --- String#to_hepburn Convert a Kunrei Romaji string into a Hepburn Romaji string. --- String#to_kunrei Convert a Hepburn Romaji string into a Kunrei Romaji string. --- String#to_kana! Destructive version of String#to_kana. --- String#to_roma! Destructive version of String#to_roma. --- String#to_hepburn! Destructive version of String#to_hepburn. --- String#to_kunrei! Destructive version of String#to_kunrei. --- String#consonant? Return true if self is a consonant. --- String#vowel? Return true if self is a vowel. --- String#expand_consonant Expand the trailing consonant into consonants. e.g. "z".expand_consonant => ["za", "ze", "zi", "zo", "zu"] == Example % irb irb(main):001:0> $KCODE="e" "e" irb(main):002:0> require 'romkan' true irb(main):003:0> "syatyou".to_kana "しゃちょう" irb(main):004:0> "しゃちょう".to_roma "shachou" irb(main):005:0> "syatyou".to_hepburn "shachou" == Download Ruby/Romkan is a free software with ABSOLUTELY NO WARRANTY under the terms of the Ruby's licence. * (()) * (()) -- satoru@namazu.org =end romkan-0.4.0/doc/romkan.ja.rd0000644000004100000410000000361412250212152016002 0ustar www-datawww-data=begin index:eJ = Ruby/Romkan: ローマ字とひらがなを相互に変換する Ruby用のライブラリ 最終更新日: 2002-02-12 -- Ruby/Romkan はローマ字とひらがなを相互に変換する Ruby 用のライブラリです。ロー マ字の文字列ををひらがなの文字列に変換、およびその反対を行うことができます。 最新版は (()) から入手可能です。 == API --- String#to_kana 訓令式またはヘボン式のローマ字列をひらがなの文字列に変換する --- String#to_roma ひらがなの文字列をヘボン式のローマ字列に変換する --- String#to_hepburn 訓令式のローマ字列をヘボン式のローマ字列に変換する --- String#to_kunrei ヘボン式のローマ字列を訓令式のローマ字列に変換する --- String#to_kana! 破壊的な String#to_kana. --- String#to_roma! 破壊的な String#to_roma. --- String#to_hepburn! 破壊的な String#to_hepburn. --- String#to_kunrei! 破壊的な String#to_kunrei. --- String#consonant? self が子音なら true を返す --- String#vowel? self が母音なら true を返す --- String#expand_consonant self の末尾の子音を展開する e.g. "z".expand_consonant => ["za", "ze", "zi", "zo", "zu"] === 使用例 % irb irb(main):001:0> $KCODE="e" "e" irb(main):002:0> require 'romkan' true irb(main):003:0> "syatyou".to_kana "しゃちょう" irb(main):004:0> "しゃちょう".to_roma "shachou" irb(main):005:0> "syatyou".to_hepburn "shachou" === ダウンロード Ruby のライセンスに従ったフリーソフトウェアとして公開します。 完全に無保証です。 * (()) * (()) -- satoru@namazu.org =end romkan-0.4.0/lib/0000755000004100000410000000000012250212152013570 5ustar www-datawww-dataromkan-0.4.0/lib/romkan.rb0000644000004100000410000002054712250212152015414 0ustar www-datawww-data# -*- coding: utf-8 -*- # # Ruby/Romkan - a Romaji <-> Kana conversion library for Ruby. # # Copyright (C) 2001 Satoru Takabayashi # All rights reserved. # This is free software with ABSOLUTELY NO WARRANTY. # # You can redistribute it and/or modify it under the terms of # the Ruby's licence. $LOAD_PATH << File.dirname(File.expand_path(__FILE__)) require 'romkan/version' class Array def pairs(s=2) 0.step(self.size-1,s){ |x| yield self.slice(x,s) } end end class String # This table is imported from KAKASI and modified. KUNREITAB = "\ ぁ xa あ a ぃ xi い i ぅ xu う u う゛ vu う゛ぁ va う゛ぃ vi う゛ぇ ve う゛ぉ vo ぇ xe え e ぉ xo お o か ka が ga き ki きゃ kya きゅ kyu きょ kyo ぎ gi ぎゃ gya ぎゅ gyu ぎょ gyo く ku ぐ gu け ke げ ge こ ko ご go さ sa ざ za し si しゃ sya しゅ syu しょ syo じ zi じゃ zya じゅ zyu じょ zyo す su ず zu せ se ぜ ze そ so ぞ zo た ta だ da ち ti ちゃ tya ちゅ tyu ちょ tyo ぢ di ぢゃ dya ぢゅ dyu ぢょ dyo っ xtu っう゛ vvu っう゛ぁ vva っう゛ぃ vvi っう゛ぇ vve っう゛ぉ vvo っか kka っが gga っき kki っきゃ kkya っきゅ kkyu っきょ kkyo っぎ ggi っぎゃ ggya っぎゅ ggyu っぎょ ggyo っく kku っぐ ggu っけ kke っげ gge っこ kko っご ggo っさ ssa っざ zza っし ssi っしゃ ssya っしゅ ssyu っしょ ssho っじ zzi っじゃ zzya っじゅ zzyu っじょ zzyo っす ssu っず zzu っせ sse っぜ zze っそ sso っぞ zzo った tta っだ dda っち tti っちゃ ttya っちゅ ttyu っちょ ttyo っぢ ddi っぢゃ ddya っぢゅ ddyu っぢょ ddyo っつ ttu っづ ddu って tte っで dde っと tto っど ddo っは hha っば bba っぱ ppa っひ hhi っひゃ hhya っひゅ hhyu っひょ hhyo っび bbi っびゃ bbya っびゅ bbyu っびょ bbyo っぴ ppi っぴゃ ppya っぴゅ ppyu っぴょ ppyo っふ hhu っふぁ ffa っふぃ ffi っふぇ ffe っふぉ ffo っぶ bbu っぷ ppu っへ hhe っべ bbe っぺ ppe っほ hho っぼ bbo っぽ ppo っや yya っゆ yyu っよ yyo っら rra っり rri っりゃ rrya っりゅ rryu っりょ rryo っる rru っれ rre っろ rro つ tu づ du て te で de と to ど do な na に ni にゃ nya にゅ nyu にょ nyo ぬ nu ね ne の no は ha ば ba ぱ pa ひ hi ひゃ hya ひゅ hyu ひょ hyo び bi びゃ bya びゅ byu びょ byo ぴ pi ぴゃ pya ぴゅ pyu ぴょ pyo ふ hu ふぁ fa ふぃ fi ふぇ fe ふぉ fo ぶ bu ぷ pu へ he べ be ぺ pe ほ ho ぼ bo ぽ po ま ma み mi みゃ mya みゅ myu みょ myo む mu め me も mo ゃ xya や ya ゅ xyu ゆ yu ょ xyo よ yo ら ra り ri りゃ rya りゅ ryu りょ ryo る ru れ re ろ ro ゎ xwa わ wa ゐ wi ゑ we を wo ん n ん n' でぃ dyi ー - ちぇ tye っちぇ ttye じぇ zye " HEPBURNTAB = "\ ぁ xa あ a ぃ xi い i ぅ xu う u う゛ vu う゛ぁ va う゛ぃ vi う゛ぇ ve う゛ぉ vo ぇ xe え e ぉ xo お o か ka が ga き ki きゃ kya きゅ kyu きょ kyo ぎ gi ぎゃ gya ぎゅ gyu ぎょ gyo く ku ぐ gu け ke げ ge こ ko ご go さ sa ざ za し shi しゃ sha しゅ shu しょ sho じ ji じゃ ja じゅ ju じょ jo す su ず zu せ se ぜ ze そ so ぞ zo た ta だ da ち chi ちゃ cha ちゅ chu ちょ cho ぢ di ぢゃ dya ぢゅ dyu ぢょ dyo っ xtsu っう゛ vvu っう゛ぁ vva っう゛ぃ vvi っう゛ぇ vve っう゛ぉ vvo っか kka っが gga っき kki っきゃ kkya っきゅ kkyu っきょ kkyo っぎ ggi っぎゃ ggya っぎゅ ggyu っぎょ ggyo っく kku っぐ ggu っけ kke っげ gge っこ kko っご ggo っさ ssa っざ zza っし sshi っしゃ ssha っしゅ sshu っしょ ssho っじ jji っじゃ jja っじゅ jju っじょ jjo っす ssu っず zzu っせ sse っぜ zze っそ sso っぞ zzo った tta っだ dda っち cchi っちゃ ccha っちゅ cchu っちょ ccho っぢ ddi っぢゃ ddya っぢゅ ddyu っぢょ ddyo っつ ttsu っづ ddu って tte っで dde っと tto っど ddo っは hha っば bba っぱ ppa っひ hhi っひゃ hhya っひゅ hhyu っひょ hhyo っび bbi っびゃ bbya っびゅ bbyu っびょ bbyo っぴ ppi っぴゃ ppya っぴゅ ppyu っぴょ ppyo っふ ffu っふぁ ffa っふぃ ffi っふぇ ffe っふぉ ffo っぶ bbu っぷ ppu っへ hhe っべ bbe っぺ ppe っほ hho っぼ bbo っぽ ppo っや yya っゆ yyu っよ yyo っら rra っり rri っりゃ rrya っりゅ rryu っりょ rryo っる rru っれ rre っろ rro つ tsu づ du て te で de と to ど do な na に ni にゃ nya にゅ nyu にょ nyo ぬ nu ね ne の no は ha ば ba ぱ pa ひ hi ひゃ hya ひゅ hyu ひょ hyo び bi びゃ bya びゅ byu びょ byo ぴ pi ぴゃ pya ぴゅ pyu ぴょ pyo ふ fu ふぁ fa ふぃ fi ふぇ fe ふぉ fo ぶ bu ぷ pu へ he べ be ぺ pe ほ ho ぼ bo ぽ po ま ma み mi みゃ mya みゅ myu みょ myo む mu め me も mo ゃ xya や ya ゅ xyu ゆ yu ょ xyo よ yo ら ra り ri りゃ rya りゅ ryu りょ ryo る ru れ re ろ ro ゎ xwa わ wa ゐ wi ゑ we を wo ん n ん n' でぃ dyi ー - ちぇ che っちぇ cche じぇ je " KANROM = (kanaroma = Hash.new (KUNREITAB + HEPBURNTAB).split(/\s+/).pairs {|x| kana, roma = x kanaroma[kana] = roma } kanaroma) ROMKAN = (romakana = Hash.new (KUNREITAB + HEPBURNTAB).split(/\s+/).pairs {|x| kana, roma = x romakana[roma] = kana } romakana) # Sort in long order so that a longer Romaji sequence precedes. ROMPAT = ROMKAN.keys.sort {|a, b| b.length <=> a.length}.join "|" KANPAT = KANROM.keys.sort {|a, b| b.length <=> a.length || KANROM[a].length <=> KANROM[b].length }.join "|" KUNREI = (i = 0; KUNREITAB. split(/\s+/).select {i += 1; i % 2 == 0}) HEPBURN = (i = 0; HEPBURNTAB.split(/\s+/).select {i += 1; i % 2 == 0}) KUNPAT = KUNREI.sort {|a, b| b.length <=> a.length }.join "|" HEPPAT = HEPBURN.sort {|a, b| b.length <=> a.length }.join "|" TO_HEPBURN = (romrom = Hash.new KUNREI.each_with_index {|x, ix| romrom[KUNREI[ix]] = HEPBURN[ix]} romrom) TO_KUNREI = (romrom = Hash.new HEPBURN.each_with_index {|x, ix| romrom[HEPBURN[ix]] = KUNREI[ix]} romrom) # FIXME: ad hod solution # tanni => tan'i # kannji => kanji # hannnou => han'nou # hannnya => han'nya def normalize_double_n self.gsub(/nn/, "n'").gsub(/n\'(?=[^aiueoyn]|$)/, "n") end def normalize_double_n! self.gsub!(/nn/, "n'") self.gsub!(/n\'(?=[^aiueoyn]|$)/, "n") self end # Romaji -> Kana # It can handle both Hepburn and Kunrei sequences. def to_kana tmp = self.normalize_double_n tmp.gsub(/(#{ROMPAT})/) { ROMKAN[$1] } end # Kana -> Romaji. # Return Hepburn sequences. def to_roma tmp = self.gsub(/(#{KANPAT})/) { KANROM[$1] } tmp.gsub(/n'(?=[^aeiuoyn]|$)/, "n") end # Romaji -> Romaji # Normalize into Hepburn sequences. # e.g. kannzi -> kanji, tiezo -> chiezo def to_hepburn tmp = self.normalize_double_n tmp.gsub(/\G((?:#{HEPPAT})*?)(#{KUNPAT})/) { $1 + TO_HEPBURN[$2]} end # Romaji -> Romaji # Normalize into Kunrei sequences. # e.g. kanji -> kanzi, chiezo -> tiezo def to_kunrei tmp = self.normalize_double_n tmp.gsub(/\G((?:#{KUNPAT})*?)(#{HEPPAT})/) { $1 + TO_KUNREI[$2]} end def to_kana! self.normalize_double_n! self.gsub!(/(#{ROMPAT})/) { ROMKAN[$1] } self end def to_roma! self.gsub!(/(#{KANPAT})/) { KANROM[$1] } self.gsub!(/n'(?=[^aeiuoyn]|$)/, "n") self end def to_hepburn! self.normalize_double_n! self.gsub!(/\G((?:#{HEPPAT})*?)(#{KUNPAT})/) { $1 + TO_HEPBURN[$2]} self end def to_kunrei! tmp = self.normalize_double_n! tmp.gsub!(/\G((?:#{KUNPAT})*?)(#{HEPPAT})/) { $1 + TO_KUNREI[$2]} end def consonant? if /^[ckgszjtdhfpbmyrwxn]$/.match(self) true else false end end def vowel? if /^[aeiou]$/.match(self) true else false end end # `z' => (za ze zi zo zu) def expand_consonant ROMKAN.keys.select do |x| /^#{self}.$/ =~ x end end end romkan-0.4.0/lib/romkan/0000755000004100000410000000000012250212152015057 5ustar www-datawww-dataromkan-0.4.0/lib/romkan/version.rb0000644000004100000410000000022012250212152017063 0ustar www-datawww-datamodule Romkan module VERSION #:nodoc: MAJOR = 0 MINOR = 4 TINY = 0 STRING = [MAJOR, MINOR, TINY].compact.join('.') end end romkan-0.4.0/metadata.yml0000644000004100000410000000247612250212152015336 0ustar www-datawww-data--- !ruby/object:Gem::Specification name: romkan version: !ruby/object:Gem::Version prerelease: version: 0.4.0 platform: ruby authors: - Satoru Takabayashi autorequire: bindir: bin cert_chain: [] date: 2011-03-17 00:00:00 +09:00 default_executable: dependencies: [] description: | Ruby/Romkan is a Romaji <-> Kana conversion library for Ruby. It can convert a Japanese Romaji string to a Japanese Kana string or vice versa. Tha latest version of Ruby/Romkan is available at (()) email: executables: [] extensions: [] extra_rdoc_files: [] files: - doc/romkan.ja.rd - doc/romkan.en.rd - lib/romkan.rb - lib/romkan/version.rb - test/romakn_test.rb - ChangeLog has_rdoc: true homepage: http://0xcc.net/ruby-romkan/ licenses: - Ruby's post_install_message: rdoc_options: [] require_paths: - lib required_ruby_version: !ruby/object:Gem::Requirement none: false requirements: - - ">=" - !ruby/object:Gem::Version version: "0" required_rubygems_version: !ruby/object:Gem::Requirement none: false requirements: - - ">=" - !ruby/object:Gem::Version version: "0" requirements: [] rubyforge_project: rubygems_version: 1.6.0 signing_key: specification_version: 3 summary: a Romaji <-> Kana conversion library for Ruby. test_files: [] romkan-0.4.0/test/0000755000004100000410000000000012250212152014001 5ustar www-datawww-dataromkan-0.4.0/test/romakn_test.rb0000644000004100000410000000560612250212152016663 0ustar www-datawww-data# -*- coding: utf-8 -*- require 'romkan' require 'test/unit' class RomkanTest < Test::Unit::TestCase def test_kanji assert_equal "かんじ" , "kanji".to_kana end def test_kanzi assert_equal "かんじ" , "kanzi".to_kana end def test_kannji assert_equal "かんじ" , "kannji".to_kana end def test_chie assert_equal "ちえ" , "chie".to_kana end def test_tie assert_equal "ちえ" , "tie".to_kana end def test_kyouju assert_equal "きょうじゅ" , "kyouju".to_kana end def test_syuukyou assert_equal "しゅうきょう" , "syuukyou".to_kana end def test_shuukyou assert_equal "しゅうきょう" , "shuukyou".to_kana end def test_saichuu assert_equal "さいちゅう" , "saichuu".to_kana end def test_saityuu assert_equal "さいちゅう" , "saityuu".to_kana end def test_cheri assert_equal "ちぇりー" , "cheri-".to_kana end def test_tyeri assert_equal "ちぇりー" , "tyeri-".to_kana end def test_shinrai assert_equal "しんらい" , "shinrai".to_kana end def test_sinrai assert_equal "しんらい" , "sinrai".to_kana end def test_hannnou assert_equal "はんのう" , "hannnou".to_kana end def test_hannou assert_equal "はんのう" , "han'nou".to_kana end def test_je assert_equal "じぇ" , "je".to_kana end def test_ejento assert_equal "えーじぇんと" , "e-jento".to_kana end def test_kannzi assert_equal "kanji" , "kannzi".to_hepburn end def test_tie assert_equal "chie" , "tie".to_hepburn end def test_kanji assert_equal "kanzi" , "kanji".to_kunrei end def test_chie assert_equal "tie" , "chie".to_kunrei end def test_かんじ assert_equal "kanji" , "かんじ".to_roma end def test_ちゃう assert_equal "chau" , "ちゃう".to_roma end def test_はんのう assert_equal "han'nou" , "はんのう".to_roma end def test_consonant_a? assert_equal false, "a".consonant? end def test_consonant_k? assert_equal true, "k".consonant? end def test_consonant_k assert_equal ["ka", "ke", "ki", "ko", "ku"], "k".expand_consonant.sort end def test_consonant_s assert_equal ["sa", "se", "si", "so", "su"], "s".expand_consonant.sort end def test_consonant_t assert_equal ["ta", "te", "ti", "to", "tu"], "t".expand_consonant.sort end def test_consonant_ky assert_equal ["kya", "kyo", "kyu"], "ky".expand_consonant.sort end def test_consonant_kk assert_equal ["kka", "kke", "kki", "kko", "kku"], "kk".expand_consonant.sort end def test_consonant_sh assert_equal ["sha", "shi", "sho", "shu"], "sh".expand_consonant.sort end def test_consonant_sy assert_equal ["sya", "syo", "syu"], "sy".expand_consonant.sort end def test_consonant_ch assert_equal ["cha", "che", "chi", "cho", "chu"], "ch".expand_consonant.sort end end romkan-0.4.0/ChangeLog0000644000004100000410000000116312250212152014575 0ustar www-datawww-data2002-02-12 Satoru Takabayashi * Ruby/Romkan: Version 0.4 released. * romkan.rb (HEPBURNTAB): Add "$B$8$'(B je" 2001-07-11 Satoru Takabayashi * Ruby/Romkan: Version 0.3 released. * romkan.rb (to_kunrei): New method. 2001-07-04 Satoru Takabayashi * romkan.rb (vowel?): New method. 2001-07-03 Satoru Takabayashi * Ruby/Romkan: Version 0.2 released. * romkan.rb (consonant?): New method. * romkan.rb (expand_moras?): New method. 2001-05-01 Satoru Takabayashi * Ruby/Romkan: Version 0.1 released.