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 CHANGED
@@ -1 +1 @@
1
- 0.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
- ##### When 0 characters in the buffer
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
- ##### Patterns with 1 roman character
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
- ##### Patterns with 2 roman characters
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
- ##### Patterns with 3 roman characters
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.1.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-22}
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 = [
@@ -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.1.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-22 00:00:00.000000000 -05:00
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: &2151943680 !ruby/object:Gem::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: *2151943680
25
+ version_requirements: *2152003560
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &2151942060 !ruby/object:Gem::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: *2151942060
36
+ version_requirements: *2151951280
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: jeweler
39
- requirement: &2151940200 !ruby/object:Gem::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: *2151940200
47
+ version_requirements: *2151943820
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rcov
50
- requirement: &2151938300 !ruby/object:Gem::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: *2151938300
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: 1829960584384631724
95
+ hash: -486556931189200813
96
96
  required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements: