romajinizer 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/romajinizer.rb +51 -11
- data/romajinizer.gemspec +2 -2
- data/spec/romajinizer_spec.rb +10 -0
- metadata +11 -11
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/romajinizer.rb
CHANGED
@@ -37,6 +37,28 @@
|
|
37
37
|
|
38
38
|
module Kana2rom
|
39
39
|
|
40
|
+
HiraganaCharacters = [
|
41
|
+
' ', ' ', '々', '~', 'っ', 'ょ', 'ゃ', 'ゅ', 'あ', 'い', 'う',
|
42
|
+
'え', 'お', 'か', 'き', 'く', 'け', 'こ', 'さ', 'し', 'す', 'せ',
|
43
|
+
'そ', 'た', 'ち', 'つ', 'て', 'と', 'な', 'に', 'ぬ', 'ね', 'の',
|
44
|
+
'は', 'ひ', 'ふ', 'へ', 'ほ', 'ま', 'み', 'む', 'め', 'も', 'や',
|
45
|
+
'ゆ', 'よ', 'ら', 'り', 'る', 'れ', 'ろ', 'わ', 'ゐ', 'ゑ', 'を',
|
46
|
+
'ん', 'が', 'ぎ', 'ぐ', 'げ', 'ご', 'ざ', 'じ', 'ず', 'ぜ', 'ぞ',
|
47
|
+
'だ', 'ぢ', 'づ', 'で', 'ど', 'ば', 'び', 'ぶ', 'べ', 'ぼ', 'ぱ',
|
48
|
+
'ぴ', 'ぷ', 'ぺ', 'ぽ', 'ヶ'
|
49
|
+
]
|
50
|
+
|
51
|
+
KatakanaCharacters = [
|
52
|
+
'ョ', 'ャ', 'ュ', 'ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク',
|
53
|
+
'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ',
|
54
|
+
'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
|
55
|
+
'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル',
|
56
|
+
'レ', 'ロ', 'ワ', 'ゐ', 'ゑ', 'ヲ', 'ン', 'ガ', 'ギ', 'グ', 'ゲ',
|
57
|
+
'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヅ', 'ヂ', 'ズ', 'デ',
|
58
|
+
'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ'
|
59
|
+
]
|
60
|
+
|
61
|
+
|
40
62
|
Kana2romH={
|
41
63
|
"ア"=>"a", "イ"=>"i", "ウ"=>"u", "エ"=>"e","オ"=>"o",
|
42
64
|
"あ"=>"a", "い"=>"i", "う"=>"u", "え"=>"e","お"=>"o",
|
@@ -78,7 +100,7 @@ module Kana2rom
|
|
78
100
|
":"=>":", " " => " ", "@" => "@", "(" => "(", ")" => ")",
|
79
101
|
" " => " "
|
80
102
|
}
|
81
|
-
|
103
|
+
|
82
104
|
Kana2romH2={
|
83
105
|
"てぃ" => "ti", "でぃ" => "di"
|
84
106
|
}
|
@@ -158,7 +180,7 @@ module Kana2rom
|
|
158
180
|
"ッ"=>"っ", "ャ"=>"ゃ", "ュ"=>"ゅ", "ョ"=>"ょ",
|
159
181
|
"ヴ"=>"う゛", "ヵ"=>"か", "ヶ"=>"が", "ヮ"=>"ゎ"
|
160
182
|
}
|
161
|
-
|
183
|
+
|
162
184
|
Hira2kataH={}; Kata2hiraH.each_pair{|k,v| Hira2kataH[v]=k}; Hira2kataH["か"]="カ"; Hira2kataH["が"]="ガ"
|
163
185
|
|
164
186
|
def kana2rom
|
@@ -170,7 +192,7 @@ module Kana2rom
|
|
170
192
|
s += c
|
171
193
|
end
|
172
194
|
end
|
173
|
-
|
195
|
+
|
174
196
|
s=s.gsub(/(k)([aiueo])(")/,'g\2').gsub(/(s)([aiueo])(")/,'z\2').gsub(/(t)([aiueo])(")/,'d\2')
|
175
197
|
s=s.gsub(/(h)([aiueo])(")/,'b\2').gsub(/([fh])([aiueo])(')/,'p\2').gsub(/u"/,'vu') # [半]濁点゛゜
|
176
198
|
#---------------------------------------------------------
|
@@ -216,7 +238,7 @@ module Kana2rom
|
|
216
238
|
#---------------------------------------------------------
|
217
239
|
return s
|
218
240
|
end
|
219
|
-
|
241
|
+
|
220
242
|
def rom2kata
|
221
243
|
## THIS LINE DOES NOT WORK IN RECENT RUBY VERSIONS!!! r=""; w=[]; chars=str.split(//e)
|
222
244
|
result=""
|
@@ -224,14 +246,14 @@ module Kana2rom
|
|
224
246
|
chars=self.each_char.collect{|c| c}
|
225
247
|
loop do
|
226
248
|
case word_buffer.size
|
227
|
-
|
249
|
+
##### When 0 characters in the buffer
|
228
250
|
when 0 then
|
229
251
|
if chars.size > 0
|
230
252
|
word_buffer.push(chars.shift)
|
231
253
|
else
|
232
254
|
return result
|
233
255
|
end
|
234
|
-
|
256
|
+
##### Patterns with 1 roman character
|
235
257
|
when 1 then
|
236
258
|
if word_buffer[0] =~ /[aiueo-]/
|
237
259
|
result += Rom2KataH1[word_buffer[0]]
|
@@ -245,7 +267,7 @@ module Kana2rom
|
|
245
267
|
else
|
246
268
|
result += word_buffer.shift
|
247
269
|
end
|
248
|
-
|
270
|
+
##### Patterns with 2 roman characters
|
249
271
|
when 2 then
|
250
272
|
if Rom2KataH2.key?(word_buffer.join)
|
251
273
|
result += Rom2KataH2[word_buffer.join]
|
@@ -269,7 +291,7 @@ module Kana2rom
|
|
269
291
|
else
|
270
292
|
result += word_buffer.shift;
|
271
293
|
end
|
272
|
-
|
294
|
+
##### Patterns with 3 roman characters
|
273
295
|
when 3 then
|
274
296
|
if Rom2KataH3.key?(word_buffer.join)
|
275
297
|
result += Rom2KataH3[word_buffer.join]
|
@@ -283,7 +305,7 @@ module Kana2rom
|
|
283
305
|
end
|
284
306
|
end
|
285
307
|
end
|
286
|
-
|
308
|
+
|
287
309
|
def kata2hira(str)
|
288
310
|
s=""; str.each_char{|c| s+=( Kata2hiraH.key?(c) ? Kata2hiraH[c] : c )}
|
289
311
|
s.normalize_double_n!
|
@@ -294,7 +316,7 @@ module Kana2rom
|
|
294
316
|
s=""; str.each_char{|c|if(Hira2kataH.key?(c))then s+=Hira2kataH[c];else s+=c; end}
|
295
317
|
return s
|
296
318
|
end
|
297
|
-
|
319
|
+
|
298
320
|
def normalize_double_n
|
299
321
|
self.gsub(/n\'(?=[^aiueoyn]|$)/, "n")
|
300
322
|
end
|
@@ -314,11 +336,29 @@ module Kana2rom
|
|
314
336
|
result << str3 if str3.length > 0 and str2 !=str3 and str3 != str1
|
315
337
|
return result
|
316
338
|
end
|
317
|
-
|
339
|
+
|
318
340
|
def rom2hira
|
319
341
|
return kata2hira(rom2kata)
|
320
342
|
end
|
321
343
|
|
344
|
+
def is_only_kana?
|
345
|
+
self.each_char do |character|
|
346
|
+
if HiraganaCharacters.include?(character) == FALSE && KatakanaCharacters.include?(character) == FALSE
|
347
|
+
return false
|
348
|
+
end
|
349
|
+
end
|
350
|
+
return true
|
351
|
+
end
|
352
|
+
|
353
|
+
def contains_kana?
|
354
|
+
self.each_char do |character|
|
355
|
+
if HiraganaCharacters.include?(character) == TRUE || KatakanaCharacters.include?(character) == TRUE
|
356
|
+
return true
|
357
|
+
end
|
358
|
+
end
|
359
|
+
return false
|
360
|
+
end
|
361
|
+
|
322
362
|
alias :to_hiragana :rom2hira
|
323
363
|
alias :to_katakana :rom2kata
|
324
364
|
alias :to_romaji :kana2rom
|
data/romajinizer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{romajinizer}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Joe Ellis"]
|
12
|
-
s.date = %q{2011-07-
|
12
|
+
s.date = %q{2011-07-23}
|
13
13
|
s.description = %q{A gem for converting between hiragana, katakana, and romaji}
|
14
14
|
s.email = %q{joe@squarefour.net}
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/romajinizer_spec.rb
CHANGED
@@ -25,4 +25,14 @@ describe "Romajinizer" do
|
|
25
25
|
it "should convert kana to kana" do
|
26
26
|
"こんばn".to_hiragana.should == "こんばん"
|
27
27
|
end
|
28
|
+
|
29
|
+
it "should be able to tell if a word contains anything else but kana" do
|
30
|
+
"行きます".is_only_kana?.should == false
|
31
|
+
"いきます".is_only_kana?.should == true
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should be able to tell if a word contains kana" do
|
35
|
+
"行きます".contains_kana?.should == true
|
36
|
+
"abcdefg".contains_kana?.should == false
|
37
|
+
end
|
28
38
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: romajinizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-07-
|
12
|
+
date: 2011-07-23 00:00:00.000000000 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
17
|
-
requirement: &
|
17
|
+
requirement: &2152003560 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 2.3.0
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2152003560
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: bundler
|
28
|
-
requirement: &
|
28
|
+
requirement: &2151951280 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2151951280
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: jeweler
|
39
|
-
requirement: &
|
39
|
+
requirement: &2151943820 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.5.2
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2151943820
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rcov
|
50
|
-
requirement: &
|
50
|
+
requirement: &2151942040 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2151942040
|
59
59
|
description: A gem for converting between hiragana, katakana, and romaji
|
60
60
|
email: joe@squarefour.net
|
61
61
|
executables: []
|
@@ -92,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
92
|
version: '0'
|
93
93
|
segments:
|
94
94
|
- 0
|
95
|
-
hash:
|
95
|
+
hash: -486556931189200813
|
96
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|