romankana 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -4,6 +4,9 @@ PostInstall.txt
4
4
  README.rdoc
5
5
  Rakefile
6
6
  lib/romankana.rb
7
+ lib/romankana/romankana.rb
8
+ lib/romankana/r2k.rb
9
+ lib/romankana/k2r.rb
7
10
  script/console
8
11
  script/destroy
9
12
  script/generate
data/README.rdoc CHANGED
@@ -1,9 +1,11 @@
1
1
  = RomanKana : Roman Alphabet <-> Japanese Hiragana/Katkakana Convert Library for Ruby
2
2
 
3
- * https://github.com/ymrl/RomanKana
3
+ * https://github.com/ymrl/romankana
4
+
4
5
 
5
6
  == SYNOPSIS:
6
7
 
8
+ require 'romankana'
7
9
  RomanKana.kanaroman 'ほげほげ' #=> 'hogehoge'
8
10
  RomanKana.kanaroman 'ホゲホゲ' #=> 'hogehoge'
9
11
  RomanKana.romankana 'hogehoge' #=> 'ほげほげ'
@@ -17,6 +19,7 @@
17
19
  'ほげほげhogehogeホゲホゲ'.roman_to_hiragana #=> 'ほげほげほげほげホゲホゲ'
18
20
 
19
21
  == REQUIREMENTS:
22
+
20
23
  * ruby (VERSION >= 1.8.7)
21
24
 
22
25
  == LICENSE:
@@ -0,0 +1,121 @@
1
+ #coding:utf-8
2
+ module RomanKana
3
+ K2R_table = {
4
+ 'ア' => 'a',
5
+ 'イ' => 'i',
6
+ 'ウ' => 'u',
7
+ 'エ' => 'e',
8
+ 'オ' => 'o',
9
+ 'カ' => 'ka',
10
+ 'キ' => 'ki',
11
+ 'ク' => 'ku',
12
+ 'ケ' => 'ke',
13
+ 'コ' => 'ko',
14
+ 'サ' => 'sa',
15
+ 'シ' => 'si',
16
+ 'ス' => 'su',
17
+ 'セ' => 'se',
18
+ 'ソ' => 'so',
19
+ 'タ' => 'ta',
20
+ 'チ' => 'chi',
21
+ 'ツ' => 'tsu',
22
+ 'テ' => 'te',
23
+ 'ト' => 'to',
24
+ 'ナ' => 'na',
25
+ 'ニ' => 'ni',
26
+ 'ヌ' => 'nu',
27
+ 'ネ' => 'ne',
28
+ 'ノ' => 'no',
29
+ 'ハ' => 'ha',
30
+ 'ヒ' => 'hi',
31
+ 'フ' => 'fu',
32
+ 'ヘ' => 'he',
33
+ 'ホ' => 'ho',
34
+ 'マ' => 'ma',
35
+ 'ミ' => 'mi',
36
+ 'ム' => 'mu',
37
+ 'メ' => 'me',
38
+ 'モ' => 'mo',
39
+ 'ヤ' => 'ya',
40
+ 'ユ' => 'yu',
41
+ 'ヨ' => 'yo',
42
+ 'ラ' => 'ra',
43
+ 'リ' => 'ri',
44
+ 'ル' => 'ru',
45
+ 'レ' => 're',
46
+ 'ロ' => 'ro',
47
+ 'ワ' => 'wa',
48
+ 'ヰ' => 'i',
49
+ 'ヱ' => 'e',
50
+ 'ヲ' => 'o',
51
+ 'ン' => 'n',
52
+ 'ガ' => 'ga',
53
+ 'ギ' => 'gi',
54
+ 'グ' => 'gu',
55
+ 'ゲ' => 'ge',
56
+ 'ゴ' => 'go',
57
+ 'ザ' => 'za',
58
+ 'ジ' => 'ji',
59
+ 'ズ' => 'zu',
60
+ 'ゼ' => 'ze',
61
+ 'ゾ' => 'zo',
62
+ 'ダ' => 'da',
63
+ 'ヂ' => 'ji',
64
+ 'ヅ' => 'zu',
65
+ 'デ' => 'de',
66
+ 'ド' => 'do',
67
+ 'バ' => 'ba',
68
+ 'ビ' => 'bi',
69
+ 'ブ' => 'bu',
70
+ 'ベ' => 'be',
71
+ 'ボ' => 'bo',
72
+ 'パ' => 'pa',
73
+ 'ピ' => 'pi',
74
+ 'プ' => 'pu',
75
+ 'ペ' => 'pe',
76
+ 'ポ' => 'po',
77
+ 'キャ' => 'kya',
78
+ 'キュ' => 'kyu',
79
+ 'キョ' => 'kyo',
80
+ 'シャ' => 'sha',
81
+ 'シュ' => 'shu',
82
+ 'ショ' => 'sho',
83
+ 'チャ' => 'cha',
84
+ 'チュ' => 'chu',
85
+ 'チョ' => 'cho',
86
+ '二ャ' => 'nya',
87
+ '二ュ' => 'nyu',
88
+ '二ョ' => 'nyo',
89
+ 'ヒャ' => 'hya',
90
+ 'ヒュ' => 'hyu',
91
+ 'ヒョ' => 'hyo',
92
+ 'ミャ' => 'mya',
93
+ 'ミュ' => 'myu',
94
+ 'ミョ' => 'myo',
95
+ 'リャ' => 'rya',
96
+ 'リュ' => 'ryu',
97
+ 'リョ' => 'ryo',
98
+ 'ギャ' => 'gya',
99
+ 'ギュ' => 'gyu',
100
+ 'ギョ' => 'gyo',
101
+ 'ジャ' => 'ja',
102
+ 'ジュ' => 'ju',
103
+ 'ジョ' => 'jo',
104
+ 'ビャ' => 'bya',
105
+ 'ビュ' => 'byu',
106
+ 'ビョ' => 'byo',
107
+ 'ピャ' => 'pya',
108
+ 'ピュ' => 'pyu',
109
+ 'ピョ' => 'pyo',
110
+ 'ヴァ' => 'va',
111
+ 'ヴィ' => 'vi',
112
+ 'ヴ' => 'vu',
113
+ 'ヴェ' => 've',
114
+ 'ヴォ' => 'vo',
115
+ 'ファ' => 'fa',
116
+ 'フィ' => 'fi',
117
+ 'フェ' => 'fe',
118
+ 'フォ' => 'fo',
119
+ 'ー' => '',
120
+ }
121
+ end
@@ -0,0 +1,110 @@
1
+ #coding:utf-8
2
+ module RomanKana
3
+ R2K_table = {
4
+ 'a' => 'ア',
5
+ 'i' => 'イ',
6
+ 'u' => 'ウ',
7
+ 'e' => 'エ',
8
+ 'o' => 'オ',
9
+ 'ba' => 'バ', 'bya' => 'ビャ',
10
+ 'bi' => 'ビ', 'byi' => 'ビィ',
11
+ 'bu' => 'ブ', 'byu' => 'ビュ',
12
+ 'be' => 'ベ', 'bye' => 'ビェ',
13
+ 'bo' => 'ボ', 'byo' => 'ビョ',
14
+ 'ca' => 'カ', 'cya' => 'チャ', 'cha' => 'チャ',
15
+ 'ci' => 'シ', 'cyi' => 'チィ', 'chi' => 'チ',
16
+ 'cu' => 'ス', 'cyu' => 'チュ', 'chu' => 'チュ',
17
+ 'ce' => 'セ', 'cye' => 'チェ', 'che' => 'チェ',
18
+ 'co' => 'コ', 'cyo' => 'チョ', 'cho' => 'チョ',
19
+ 'da' => 'ダ', 'dya' => 'ヂャ', 'dha' => 'ドャ',
20
+ 'di' => 'ヂ', 'dyi' => 'ヂィ', 'dhi' => 'ドィ',
21
+ 'du' => 'ヅ', 'dyu' => 'ヂュ', 'dhu' => 'ドュ',
22
+ 'de' => 'デ', 'dye' => 'ヂェ', 'dhe' => 'ドェ',
23
+ 'do' => 'ド', 'dyo' => 'ヂョ', 'dho' => 'ドョ',
24
+ 'fa' => 'ファ', 'fya' => 'フャ',
25
+ 'fi' => 'フィ', 'fyi' => 'フィ',
26
+ 'fu' => 'フ', 'fyu' => 'フュ',
27
+ 'fe' => 'フェ', 'fye' => 'フェ',
28
+ 'fo' => 'フォ', 'fyo' => 'フョ',
29
+ 'ga' => 'ガ', 'gya' => 'ギャ',
30
+ 'gi' => 'ギ', 'gyi' => 'ギィ',
31
+ 'gu' => 'グ', 'gyu' => 'ギュ',
32
+ 'ge' => 'ゲ', 'gye' => 'ギェ',
33
+ 'go' => 'ゴ', 'gyo' => 'ギョ',
34
+ 'ha' => 'ハ', 'hya' => 'ヒャ',
35
+ 'hi' => 'ヒ', 'hyi' => 'ヒィ',
36
+ 'hu' => 'フ', 'hyu' => 'ヒュ',
37
+ 'he' => 'ヘ', 'hye' => 'ヒェ',
38
+ 'ho' => 'ホ', 'hyo' => 'ヒョ',
39
+ 'ja' => 'ジャ', 'jya' => 'ジャ',
40
+ 'ji' => 'ジ', 'jyi' => 'ジィ',
41
+ 'ju' => 'ジュ', 'jyu' => 'ジュ',
42
+ 'je' => 'ジェ', 'jye' => 'ジェ',
43
+ 'jo' => 'ジョ', 'jyo' => 'ジョ',
44
+ 'ka' => 'カ', 'kya' => 'キャ',
45
+ 'ki' => 'キ', 'kyi' => 'キィ',
46
+ 'ku' => 'ク', 'kyu' => 'キュ',
47
+ 'ke' => 'ケ', 'kye' => 'キェ',
48
+ 'ko' => 'コ', 'kyo' => 'キョ',
49
+ 'la' => 'ラ', 'lya' => 'リャ',
50
+ 'li' => 'リ', 'lyi' => 'リィ',
51
+ 'lu' => 'ル', 'lyu' => 'リュ',
52
+ 'le' => 'レ', 'lye' => 'リェ',
53
+ 'lo' => 'ロ', 'lyo' => 'リョ',
54
+ 'ma' => 'マ', 'mya' => 'ミャ',
55
+ 'mi' => 'ミ', 'myi' => 'ミィ',
56
+ 'mu' => 'ム', 'myu' => 'ミュ',
57
+ 'me' => 'メ', 'mye' => 'ミェ',
58
+ 'mo' => 'モ', 'myo' => 'ミョ',
59
+ 'na' => 'ナ', 'nya' => '二ャ',
60
+ 'ni' => 'ニ', 'nyi' => '二ィ',
61
+ 'nu' => 'ヌ', 'nyu' => '二ュ',
62
+ 'ne' => 'ネ', 'nye' => '二ェ',
63
+ 'no' => 'ノ', 'nyo' => '二ョ',
64
+ 'pa' => 'パ', 'pya' => 'ピャ',
65
+ 'pi' => 'ピ', 'pyi' => 'ピィ',
66
+ 'pu' => 'プ', 'pyu' => 'ピュ',
67
+ 'pe' => 'ペ', 'pye' => 'ピェ',
68
+ 'po' => 'ポ', 'pyo' => 'ピョ',
69
+ 'qa' => 'クァ',
70
+ 'qi' => 'クィ',
71
+ 'qu' => 'ク',
72
+ 'qe' => 'クェ',
73
+ 'qo' => 'クォ',
74
+ 'ra' => 'ラ', 'rya' => 'リャ', 'sha' => 'シャ',
75
+ 'ri' => 'リ', 'ryi' => 'リィ', 'shi' => 'シ',
76
+ 'ru' => 'ル', 'ryu' => 'リュ', 'shu' => 'シュ',
77
+ 're' => 'レ', 'rye' => 'リェ', 'she' => 'シェ',
78
+ 'ro' => 'ロ', 'ryo' => 'リョ', 'sho' => 'ショ',
79
+ 'sa' => 'サ', 'sya' => 'シャ',
80
+ 'si' => 'シ', 'syi' => 'シィ',
81
+ 'su' => 'ス', 'syu' => 'シュ',
82
+ 'se' => 'セ', 'sye' => 'シェ',
83
+ 'so' => 'ソ', 'syo' => 'ショ',
84
+ 'ta' => 'タ', 'tya' => 'チャ', 'tha' => 'テャ',
85
+ 'ti' => 'チ', 'tyi' => 'チィ', 'thi' => 'ティ',
86
+ 'tu' => 'ツ', 'tyu' => 'チュ', 'thu' => 'テュ',
87
+ 'te' => 'テ', 'tye' => 'チェ', 'the' => 'テェ',
88
+ 'to' => 'ト', 'tyo' => 'チョ', 'tho' => 'テョ',
89
+ 'va' => 'ヴァ', 'vya' => 'ヴャ',
90
+ 'vi' => 'ヴィ', 'vyi' => 'ヴィ',
91
+ 'vu' => 'ヴ', 'vyu' => 'ヴュ',
92
+ 've' => 'ヴェ', 'vye' => 'ヴェ',
93
+ 'vo' => 'ヴォ', 'vyo' => 'ヴョ',
94
+ 'wa' => 'ワ', 'wha' => 'ウァ',
95
+ 'wi' => 'ウィ', 'wyi' => 'ヰ', 'whi' => 'ウィ',
96
+ 'wu' => 'ウ', 'whu' => 'ウ',
97
+ 'we' => 'ウェ', 'wye' => 'ヱ', 'whe' => 'ウェ',
98
+ 'wo' => 'ヲ', 'who' => 'ウォ',
99
+ 'xa' => 'ザ',
100
+ 'xi' => 'ジ',
101
+ 'xu' => 'ズ',
102
+ 'xe' => 'ゼ',
103
+ 'xo' => 'ゾ',
104
+ 'za' => 'ザ', 'zya' => 'ジャ',
105
+ 'zi' => 'ジ', 'zyi' => 'ジィ',
106
+ 'zu' => 'ズ', 'zyu' => 'ジュ',
107
+ 'ze' => 'ゼ', 'zye' => 'ジェ',
108
+ 'zo' => 'ゾ', 'zyo' => 'ジョ'
109
+ }
110
+ end
@@ -0,0 +1,83 @@
1
+ #coding:utf-8
2
+ $:.unshift(File.dirname(__FILE__)) unless
3
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
4
+
5
+ require 'kconv'
6
+
7
+ module RomanKana
8
+
9
+ def RomanKana.romankana str
10
+ ret = ''
11
+ array = NKF.nkf('-wZ0',str).downcase.split('')
12
+ buff = [array.shift]
13
+ i = 0
14
+ while i <= array.length
15
+ if a = RomanKana::R2K_table[buff.join('')]
16
+ ret += a
17
+ buff.clear
18
+ elsif buff.length >=2 and buff[0] == 'n' and buff[1] !~ /[aeiou]/
19
+ ret += 'ン'
20
+ buff.shift
21
+ elsif buff.length >=2 and buff[0] == 'm' and buff[1] != /[bmp]/
22
+ ret += 'ン'
23
+ buff.shift
24
+ elsif buff.length >= 2 and buff[0] == buff[1]
25
+ ret += 'ッ'
26
+ buff.shift
27
+ elsif buff.length >= 3
28
+ ret += buff.shift
29
+ next
30
+ end
31
+ buff << array[i]
32
+ i += 1
33
+ end
34
+ return ret+buff.join('')
35
+ end
36
+
37
+ def RomanKana.kanaroman str
38
+ ret = []
39
+ array = NKF.nkf('-wh2',str).split('')
40
+ buff = [array.shift]
41
+ i = 0
42
+ while i <= array.length
43
+ if a = RomanKana::K2R_table[buff.join('')]
44
+ ret << a
45
+ buff.clear
46
+ elsif buff.length >= 2
47
+ ret << buff.shift
48
+ next
49
+ end
50
+ buff << array[i]
51
+ i += 1
52
+ end
53
+ ret += buff
54
+ while a = ret.index('ッ')
55
+ ret[a] = ret[a+1].split('').first
56
+ end
57
+
58
+ return ret.join('')
59
+ end
60
+ end
61
+ class String
62
+ def roman_to_hiragana
63
+ Kconv.kconv(self.toutf8.split(/([a-zA-Z]+)/u).map{|e|e =~ /[a-zA-Z]+/u?NKF.nkf("-wh1",RomanKana.romankana(e)):e}.join(''),Kconv.guess(self),Kconv::UTF8)
64
+ end
65
+ def roman_to_katakana
66
+ Kconv.kconv(self.toutf8.split(/([a-zA-Z]+)/u).map{|e|e =~ /[a-zA-Z]+/u?RomanKana.romankana(e):e}.join(''),Kconv.guess(self),Kconv::UTF8)
67
+ end
68
+ def katakana_to_roman
69
+ Kconv.kconv(self.toutf8.split(/([ァ-ヴ]+)/u).map{|e|e =~ /[ァ-ヴ]+/u?RomanKana.kanaroman(e):e}.join(''),Kconv.guess(self),Kconv::UTF8)
70
+ end
71
+ def hiragana_to_roman
72
+ Kconv.kconv(self.toutf8.split(/([ぁ-ん]+)/u).map{|e|e =~ /[ぁ-ん]+/u?NKF.nkf("-wh1",RomanKana.kanaroman(e)):e}.join(''),Kconv.guess(self),Kconv::UTF8)
73
+ end
74
+ def to_roman
75
+ Kconv.kconv(RomanKana.kanaroman(self),Kconv.guess(self),Kconv::UTF8)
76
+ end
77
+ def to_hiragana
78
+ Kconv.kconv(NKF.nkf("-wh1",RomanKana.romankana(self)),Kconv.guess(self),Kconv::UTF8)
79
+ end
80
+ def to_katakana
81
+ Kconv.kconv(NKF.nkf("-wh2",RomanKana.romankana(self)),Kconv.guess(self),Kconv::UTF8)
82
+ end
83
+ end
data/lib/romankana.rb CHANGED
@@ -3,10 +3,10 @@ $:.unshift(File.dirname(__FILE__)) unless
3
3
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
4
4
 
5
5
  directory = File.expand_path(File.dirname(__FILE__))
6
- require File.join(directory, 'romankana', 'r2k')
7
- require File.join(directory, 'romankana', 'k2r')
8
- require File.join(directory, 'romankana', 'RomanKana')
6
+ require directory+'/romankana/r2k.rb'
7
+ require directory+'/romankana/k2r.rb'
8
+ require directory+'/romankana/RomanKana.rb'
9
9
 
10
10
  module RomanKana
11
- VERSION = '0.0.1'
11
+ VERSION = '0.0.2'
12
12
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: romankana
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - ymrl
@@ -42,6 +42,9 @@ files:
42
42
  - README.rdoc
43
43
  - Rakefile
44
44
  - lib/romankana.rb
45
+ - lib/romankana/romankana.rb
46
+ - lib/romankana/r2k.rb
47
+ - lib/romankana/k2r.rb
45
48
  - script/console
46
49
  - script/destroy
47
50
  - script/generate
@@ -51,7 +54,7 @@ files:
51
54
  - tasks/rspec.rake
52
55
  - .gemtest
53
56
  has_rdoc: true
54
- homepage: https://github.com/ymrl/RomanKana
57
+ homepage: https://github.com/ymrl/romankana
55
58
  licenses: []
56
59
 
57
60
  post_install_message: