romajinizer 0.1.0 → 0.2.0
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/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:
|