romkan-0.4.0/ 0000755 0000041 0000041 00000000000 12250212152 013022 5 ustar www-data www-data romkan-0.4.0/doc/ 0000755 0000041 0000041 00000000000 12250212152 013567 5 ustar www-data www-data romkan-0.4.0/doc/romkan.en.rd 0000644 0000041 0000041 00000003342 12250212152 016010 0 ustar www-data www-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.rd 0000644 0000041 0000041 00000003614 12250212152 016002 0 ustar www-data www-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/ 0000755 0000041 0000041 00000000000 12250212152 013570 5 ustar www-data www-data romkan-0.4.0/lib/romkan.rb 0000644 0000041 0000041 00000020547 12250212152 015414 0 ustar www-data www-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/ 0000755 0000041 0000041 00000000000 12250212152 015057 5 ustar www-data www-data romkan-0.4.0/lib/romkan/version.rb 0000644 0000041 0000041 00000000220 12250212152 017063 0 ustar www-data www-data module Romkan
module VERSION #:nodoc:
MAJOR = 0
MINOR = 4
TINY = 0
STRING = [MAJOR, MINOR, TINY].compact.join('.')
end
end
romkan-0.4.0/metadata.yml 0000644 0000041 0000041 00000002476 12250212152 015336 0 ustar www-data www-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/ 0000755 0000041 0000041 00000000000 12250212152 014001 5 ustar www-data www-data romkan-0.4.0/test/romakn_test.rb 0000644 0000041 0000041 00000005606 12250212152 016663 0 ustar www-data www-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/ChangeLog 0000644 0000041 0000041 00000001163 12250212152 014575 0 ustar www-data www-data 2002-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.