romankana 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: