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 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: