romankana 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cfa46d42b2de0371896cd3d454a4fd64ff61fecf
4
+ data.tar.gz: 21b33444b783f0363b5356fbe39c319770c141d4
5
+ SHA512:
6
+ metadata.gz: f49f33cb537e6bb6c4429675f844675cc10348bc885425bd70d9650cb65c515fc8e565231cc66a78cb4974efd1aa32c19e30f58754e1ebf7ea8728e2f15b6cbf
7
+ data.tar.gz: 496856e117740d2b09b1cd00da4c5475659140c934944cde2479df13e839b2d659336deb31a65069bdcf48ce1be911dcc4db95ba8ffa11d9ad8b1cd63a20f80b
data/.gitignore ADDED
@@ -0,0 +1,30 @@
1
+ .*.swp
2
+ .*.swo
3
+ *~
4
+ pkg/*
5
+
6
+ .DS_Store
7
+
8
+ nbproject/private/rake-d.txt
9
+
10
+ nbproject/project.properties
11
+
12
+ nbproject/project.xml
13
+
14
+ *.gem
15
+ *.rbc
16
+ .bundle
17
+ .config
18
+ .yardoc
19
+ Gemfile.lock
20
+ InstalledFiles
21
+ _yardoc
22
+ coverage
23
+ doc/
24
+ lib/bundler/man
25
+ pkg
26
+ rdoc
27
+ spec/reports
28
+ test/tmp
29
+ test/version_tmp
30
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.0
4
+ - 2.0.0
5
+ - 1.9.3
6
+ - 1.9.2
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'coveralls', require: false
4
+
5
+ # Specify your gem's dependencies in romankana.gemspec
6
+ gemspec
data/README.rdoc CHANGED
@@ -1,4 +1,7 @@
1
1
  = RomanKana:
2
+ {<img src="https://travis-ci.org/ymrl/romankana.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/ymrl/romankana]
3
+ {<img src="https://coveralls.io/repos/ymrl/romankana/badge.png" alt="Coverage Status" />}[https://coveralls.io/r/ymrl/romankana]
4
+
2
5
 
3
6
  * https://github.com/ymrl/romankana
4
7
 
data/Rakefile CHANGED
@@ -1,26 +1,9 @@
1
- require 'rubygems'
2
- gem 'hoe', '>= 2.1.0'
3
- require 'hoe'
4
- require 'fileutils'
5
- require './lib/romankana'
6
-
7
- Hoe.plugin :newgem
8
- # Hoe.plugin :website
9
- # Hoe.plugin :cucumberfeatures
10
-
11
- # Generate all the Rake tasks
12
- # Run 'rake -T' to see list of generated tasks (from gem root directory)
13
- $hoe = Hoe.spec 'romankana' do
14
- self.developer 'ymrl', 'ymrl@ymrl.net'
15
- #self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
16
- self.rubyforge_name = self.name # TODO this is default value
17
- # self.extra_deps = [['activesupport','>= 2.0.2']]
18
-
19
- end
20
-
21
- require 'newgem/tasks'
22
- Dir['tasks/**/*.rake'].each { |t| load t }
23
-
24
- # TODO - want other tests/tasks run by default? Add them to the list
25
- # remove_task :default
26
- # task :default => [:spec, :features]
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new do |spec|
5
+ spec.pattern = 'spec/**/*_spec.rb'
6
+ #spec.rspec_opts = ['--backtrace']
7
+ end
8
+
9
+ task :default => [:spec]
data/lib/romankana/k2r.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #coding:utf-8
2
2
  module RomanKana
3
- K2R_table_1 = {
3
+ K2R_TABLE = {
4
4
  'ア' => 'a',
5
5
  'イ' => 'i',
6
6
  'ウ' => 'u',
@@ -74,9 +74,6 @@ module RomanKana
74
74
  'プ' => 'pu',
75
75
  'ペ' => 'pe',
76
76
  'ポ' => 'po',
77
- 'ー' => '',
78
- }
79
- K2R_table_2 = {
80
77
  'キャ' => 'kya',
81
78
  'キュ' => 'kyu',
82
79
  'キョ' => 'kyo',
data/lib/romankana/r2k.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #coding:utf-8
2
2
  module RomanKana
3
- R2K_table = {
3
+ R2K_TABLE = {
4
4
  'a' => 'ア',
5
5
  'i' => 'イ',
6
6
  'u' => 'ウ',
@@ -3,135 +3,70 @@ $:.unshift(File.dirname(__FILE__)) unless
3
3
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
4
4
 
5
5
  require 'kconv'
6
+ require 'utils'
6
7
 
7
8
  module RomanKana
9
+ def self.find_kana_from_str str
10
+ return '' if !str || str.length == 0
11
+ found = R2K_TABLE[str]
12
+ if found
13
+ return found
14
+ elsif str.length >= 2 && str[0] == 'n' && str[1] == 'n'
15
+ return "ン#{find_kana_from_str(str[2..-1])}"
16
+ elsif str.length > 2 && str[0] == 'n' && str[1] !~ /[aiueoy]/
17
+ return "ン#{find_kana_from_str(str[1..-1])}"
18
+ elsif str.length > 2 && str[0] == 'm' && str[1] =~ /[bmp]/
19
+ return "ン#{find_kana_from_str(str[1..-1])}"
20
+ elsif str.length >= 2 && str[0] == str[1] && str[0] =~ /[bcdfghjklmnpqrstvwxyz]/
21
+ return "ッ#{find_kana_from_str(str[1..-1])}"
22
+ elsif str.length >= 2
23
+ return "#{find_kana_from_str(str[0])}#{find_kana_from_str(str[1..-1])}"
24
+ else
25
+ return str
26
+ end
27
+ end
8
28
 
9
- def RomanKana.romankana str
10
- str = RomanKana.convert_utf8(str)
29
+ def self.romankana str
30
+ str = RomanKana::Utils.convert_utf8(str)
11
31
  ret = ''
12
- array = NKF.nkf('-WwZ0',str).downcase.split('')
13
- buff = [array.shift]
14
- i = 0
15
- while i <= array.length
16
- if a = RomanKana::R2K_table[buff.join('')]
17
- ret += a
18
- buff.clear
19
- elsif buff.length >=2 and buff[0] == 'n' and buff[1] !~ /[aeiouy]/
20
- ret += 'ン'
21
- buff.shift
22
- elsif i == array.length and buff[0] == 'n'
23
- ret += 'ン'
24
- buff.shift
25
- elsif buff.length >=2 and buff[0] == 'm' and buff[1] =~ /[bmp]/
26
- ret += 'ン'
27
- buff.shift
28
- elsif buff.length >= 2 and buff[0] == buff[1] and buff[0] =~ /[a-z]/
29
- ret += 'ッ'
30
- buff.shift
31
- elsif buff.length >= 3
32
- ret += buff.shift
33
- next
34
- end
35
- buff << array[i]
36
- i += 1
37
- end
38
- return ret+buff.join('')
32
+ array = NKF.nkf('-WwZ0',str).downcase.split(/([^a-z])/).map do |e|
33
+ e.split(/([^aiueo]*[aiueo])/).delete_if{|e|e.length == 0}
34
+ end.flatten
35
+ ret = array.map{|e| find_kana_from_str e }
36
+ return ret.join('')
39
37
  end
40
38
 
41
- def RomanKana.kanaroman str
42
- str = RomanKana.convert_utf8(str)
43
- ret = []
44
- array = NKF.nkf('-Wwh2',str).split('')
45
- temp_array = []
46
- array.each{|elm|
47
- if temp_array.size > 0 && elm =~ /[ャュョ]|[ァィゥェォ]/u
48
- temp_array[temp_array.size-1] += elm
49
- else
50
- temp_array.push(elm)
51
- end
52
- }
53
- array = temp_array
54
- buff = [array.first]
55
- i = 1
56
- while i <= array.length
57
- if a = RomanKana::K2R_table_2[buff.join('')]
58
- ret << a
59
- buff.clear
60
- next if i == array.length
61
- elsif a = RomanKana::K2R_table_2[buff[0]]
62
- ret << a
63
- buff.shift
64
- next if i == array.length
65
- elsif buff.length >= 2 && a = RomanKana::K2R_table_1[buff[0,buff.length-1].join('')]
66
- ret << a
67
- (buff.length-1).times{buff.shift}
68
- next if i == array.length
69
- elsif i == array.length && a = RomanKana::K2R_table_1[buff.join('')]
70
- ret << a
71
- buff.clear
72
- next if i == array.length
73
- elsif buff.length >= 2
74
- ret << buff.shift
75
- next
39
+ def self.kanaroman str
40
+ str = RomanKana::Utils.convert_utf8(str)
41
+ ret = nil
42
+
43
+ temp = NKF.nkf('-Wwh2',str).split('')
44
+ array = []
45
+ temp.each_with_index do |s,i|
46
+ if i + 1 < temp.length
47
+ next_str = temp[i+1]
48
+ if next_str =~ /[ァィゥェォャュョ]/u
49
+ s = "#{s}#{next_str}"
50
+ temp[i+1] = nil
51
+ end
76
52
  end
77
- buff << array[i]
78
- i += 1
53
+ array.push s if s
79
54
  end
80
- ret += buff
81
- while a = ret.index('ッ')
82
- ret[a] = ret[a+1].split('').first
55
+
56
+ ret = array.map{|e| K2R_TABLE[e] || e }
57
+ ret.each_with_index do |s,i|
58
+ if s == 'ッ'
59
+ if i + 1 < ret.length
60
+ c = ret[i+1].split('').first
61
+ ret[i] = c if c !~ /[aiueo]/
62
+ end
63
+ elsif s == 'ー'
64
+ if i - 1 >= 0
65
+ c = ret[i-1].split('').last
66
+ ret[i] = c if c =~ /[aiueo]/
67
+ end
68
+ end
83
69
  end
84
70
  return ret.join('')
85
71
  end
86
- def RomanKana.set_encoding_of_before before, after
87
- if RUBY_VERSION < "1.9"
88
- return Kconv.guess(before) == Kconv::ASCII ? after : Kconv.kconv(after,Kconv.guess(before),Kconv::UTF8)
89
- end
90
- e = before.encoding
91
- return (e == Encoding::US_ASCII or e == Encoding::ASCII_8BIT) ? after : after.encode(e)
92
- end
93
- def RomanKana.convert_utf8 str
94
- if RUBY_VERSION < "1.9"
95
- return str.toutf8
96
- else
97
- return (str.encoding != Encoding::UTF_8) ? str.encode(Encoding::UTF_8) : str
98
- end
99
- end
100
72
  end
101
-
102
-
103
- class String
104
- def roman_to_hiragana
105
- r = self.split(/([a-zA-Z]+)/u).map{|e|e =~ /[a-zA-Z]+/u?NKF.nkf("-Wwh1",RomanKana.romankana(e)):e}.join('')
106
- return RomanKana.set_encoding_of_before(self,r)
107
- end
108
- def roman_to_katakana
109
- r = self.split(/([a-zA-Z]+)/u).map{|e|e =~ /[a-zA-Z]+/u?RomanKana.romankana(e):e}.join('')
110
- return RomanKana.set_encoding_of_before(self,r)
111
- end
112
- def katakana_to_roman
113
- r = self.split(/([ァ-ヴ]+)/u).map{|e|e =~ /[ァ-ヴ]+/u?RomanKana.kanaroman(e):e}.join('')
114
- return RomanKana.set_encoding_of_before(self,r)
115
- end
116
- def hiragana_to_roman
117
- r = self.split(/([ぁ-ゔ]+)/u).map{|e|e =~ /[ぁ-ゔ]+/u?NKF.nkf("-Wwh1",RomanKana.kanaroman(e)):e}.join('')
118
- return RomanKana.set_encoding_of_before(self,r)
119
- end
120
- def to_roman
121
- r = RomanKana.kanaroman(self)
122
- return RomanKana.set_encoding_of_before(self,r)
123
- end
124
- def to_hiragana
125
- r = NKF.nkf('-Wwh1',RomanKana.romankana(self))
126
- return RomanKana.set_encoding_of_before(self,r)
127
- end
128
- def to_katakana
129
- r = NKF.nkf('-Wwh2',RomanKana.romankana(self))
130
- return RomanKana.set_encoding_of_before(self,r)
131
- end
132
- def to_hankaku
133
- r = NKF.nkf('-Z4xwW',RomanKana.convert_utf8(self))
134
- return RomanKana.set_encoding_of_before(self,r)
135
- end
136
- end
137
-
@@ -0,0 +1,40 @@
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 'romankana'
6
+
7
+ class String
8
+ def roman_to_hiragana
9
+ r = self.split(/([a-zA-Z]+)/u).map{|e|e =~ /[a-zA-Z]+/u?NKF.nkf("-Wwh1",RomanKana.romankana(e)):e}.join('')
10
+ return RomanKana::Utils.set_encoding_of_before(self,r)
11
+ end
12
+ def roman_to_katakana
13
+ r = self.split(/([a-zA-Z]+)/u).map{|e|e =~ /[a-zA-Z]+/u?RomanKana.romankana(e):e}.join('')
14
+ return RomanKana::Utils.set_encoding_of_before(self,r)
15
+ end
16
+ def katakana_to_roman
17
+ r = self.split(/([ァ-ヴ]+)/u).map{|e|e =~ /[ァ-ヴ]+/u?RomanKana.kanaroman(e):e}.join('')
18
+ return RomanKana::Utils.set_encoding_of_before(self,r)
19
+ end
20
+ def hiragana_to_roman
21
+ r = self.split(/([ぁ-ゔ]+)/u).map{|e|e =~ /[ぁ-ゔ]+/u?NKF.nkf("-Wwh1",RomanKana.kanaroman(e)):e}.join('')
22
+ return RomanKana::Utils.set_encoding_of_before(self,r)
23
+ end
24
+ def to_roman
25
+ r = RomanKana.kanaroman(self)
26
+ return RomanKana::Utils.set_encoding_of_before(self,r)
27
+ end
28
+ def to_hiragana
29
+ r = NKF.nkf('-Wwh1',RomanKana.romankana(self))
30
+ return RomanKana::Utils.set_encoding_of_before(self,r)
31
+ end
32
+ def to_katakana
33
+ r = NKF.nkf('-Wwh2',RomanKana.romankana(self))
34
+ return RomanKana::Utils.set_encoding_of_before(self,r)
35
+ end
36
+ def to_hankaku
37
+ r = NKF.nkf('-Z4xwW',RomanKana::Utils.convert_utf8(self))
38
+ return RomanKana::Utils.set_encoding_of_before(self,r)
39
+ end
40
+ end
@@ -0,0 +1,13 @@
1
+ module RomanKana
2
+ module Utils
3
+ def self.set_encoding_of_before before, after
4
+ e = before.encoding
5
+ return (e == Encoding::US_ASCII or e == Encoding::ASCII_8BIT) ? after : after.encode(e)
6
+ end
7
+
8
+ def self.convert_utf8 str
9
+ return (str.encoding != Encoding::UTF_8) ? str.encode(Encoding::UTF_8) : str
10
+ end
11
+ end
12
+ end
13
+
@@ -0,0 +1,3 @@
1
+ module RomanKana
2
+ VERSION = '0.2.0'
3
+ end
data/lib/romankana.rb CHANGED
@@ -1,12 +1,14 @@
1
1
  #coding:utf-8
2
2
  $:.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
6
  require directory+'/romankana/r2k.rb'
7
7
  require directory+'/romankana/k2r.rb'
8
+ require directory+'/romankana/utils.rb'
8
9
  require directory+'/romankana/romankana.rb'
9
-
10
+ require directory+'/romankana/string.rb'
11
+ require directory+'/romankana/version.rb'
12
+
10
13
  module RomanKana
11
- VERSION = '0.1.3'
12
14
  end
data/romankana.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'romankana/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "romankana"
7
+ spec.version = RomanKana::VERSION
8
+ spec.authors = ["ymrl"]
9
+ spec.email = ["ymrl@ymrl.net"]
10
+ spec.summary = %q{Roman Alphabet <-> Japanese Hiragana/Katkakana Convert Library for Ruby}
11
+ spec.description = spec.summary
12
+ spec.homepage = "https://github.com/ymrl/romankana"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.5"
21
+ spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rspec"
23
+ end
data/script/console CHANGED
@@ -5,6 +5,6 @@ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
5
5
  libs = " -r irb/completion"
6
6
  # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
7
  # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.expand_path(File.dirname(__FILE__) + '/../lib/romankana.rb')}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/romankana.rb'}"
9
9
  puts "Loading romankana gem"
10
- exec "#{irb} #{libs} --simple-prompt"
10
+ exec "#{irb} #{libs} --simple-prompt"
@@ -1,31 +1,213 @@
1
- #coding:UTF-8
2
- #require File.dirname(__FILE__) + '/spec_helper.rb'
3
- puts File.expand_path(File.dirname(__FILE__))
1
+ # coding:UTF-8
4
2
  require 'spec_helper.rb'
5
3
 
6
- # Time to add your specs!
7
- # http://rspec.info/
8
- describe "Roman to Kana" do
9
- it 'can convert roman to katakana' do
10
- 'osakana'.to_katakana.should be_eql('オサカナ')
11
- 'nippori'.to_katakana.should be_eql('ニッポリ')
12
- 'kouenji'.to_katakana.should be_eql('コウエンジ')
13
- 'nisinippori'.to_katakana.should be_eql('ニシニッポリ')
14
- 'nishinippori'.to_katakana.should be_eql('ニシニッポリ')
15
- 'dojou'.to_katakana.should be_eql('ドジョウ')
16
- 'himonnya'.to_katakana.should be_eql('ヒモンヤ')
17
- 'evangerion'.to_katakana.should be_eql('エヴァンゲリオン')
18
- 'nyaruratohoteppu'.to_katakana.should be_eql('ニャルラトホテップ')
4
+ describe RomanKana do
5
+
6
+ describe "#find_kana_from_str" do
7
+ let(:given){ '' }
8
+ before do
9
+ @got = RomanKana.find_kana_from_str given
10
+ end
11
+
12
+ context 'non-alphabet string given' do
13
+ let(:given){ '' }
14
+
15
+ it 'returns given string' do
16
+ expect(@got).to eq given
17
+ end
18
+ end
19
+
20
+ context 'string starts with nn given' do
21
+ let(:given){ 'nnya' }
22
+
23
+ it 'returns ン...' do
24
+ expect(@got).to eq 'ンヤ'
25
+ end
26
+ end
27
+
28
+ context 'string stats with n given' do
29
+ context 'next to consonant' do
30
+ let(:given){ 'nga' }
31
+
32
+ it 'returns ンガ' do
33
+ expect(@got).to eq 'ンガ'
34
+ end
35
+ end
36
+ context 'next to vowel' do
37
+ let(:given){ 'nya' }
38
+
39
+ it 'returns ニャ' do
40
+ expect(@got).to eq 'ニャ'
41
+ end
42
+ end
43
+ end
44
+
45
+ context 'string stats with m given' do
46
+ context 'means ン' do
47
+ let(:given){ 'mba' }
48
+
49
+ it 'returns ンバ' do
50
+ expect(@got).to eq 'ンバ'
51
+ end
52
+ end
53
+
54
+ context 'next to vowel' do
55
+ let(:given){ 'ma' }
56
+
57
+ it 'returns マ' do
58
+ expect(@got).to eq 'マ'
59
+ end
60
+ end
61
+
62
+ context 'nonsense' do
63
+ let(:given){ 'mdo' }
64
+
65
+ it 'returns mド' do
66
+ expect(@got).to eq 'mド'
67
+ end
68
+ end
69
+ end
70
+
71
+ context 'string starts with same 2 alphabet given' do
72
+ context 'that is consonant' do
73
+ let(:given){'tto'}
74
+
75
+ it 'returns ット' do
76
+ expect(@got).to eq 'ット'
77
+ end
78
+ end
79
+
80
+ context 'that is vowel' do
81
+ let(:given){'aada'}
82
+
83
+ it 'returns アアダ' do
84
+ expect(@got).to eq 'アアダ'
85
+ end
86
+ end
87
+ end
88
+
89
+ context 'long string given' do
90
+ let(:given){ 'aaaaaaaa' }
91
+
92
+ it 'returns アアアアアアア' do
93
+ expect(@got).to eq 'アアアアアアアア'
94
+ end
95
+ end
19
96
  end
20
- end
21
- describe "Katakana to Roman" do
22
- it 'can convert roman to katakana' do
23
- 'オサカナ'.to_roman.should be_eql('osakana')
24
- 'ニッポリ'.to_roman.should be_eql('nippori')
25
- 'コウエンジ'.to_roman.should be_eql('kouenji')
26
- 'ニシニッポリ'.to_roman.should be_eql('nishinippori')
27
- 'ドジョウ'.to_roman.should be_eql('dojou')
28
- 'エヴァンゲリオン'.to_roman.should be_eql('evangerion')
29
- 'ニャルラトホテップ'.to_roman.should be_eql('nyaruratohoteppu')
97
+
98
+ describe "#romankana" do
99
+ let(:given){ '' }
100
+ before do
101
+ @got = RomanKana.romankana given
102
+ end
103
+
104
+ context 'hiragana given' do
105
+ let(:given) { 'あのいーはとーゔぉのすきとおったかぜ' }
106
+
107
+ it 'does nothing' do
108
+ expect(@got).to eq given
109
+ end
110
+ end
111
+
112
+ context 'katakana given' do
113
+ let(:given) { 'アノイーハトーヴォノスキトオッタカゼ' }
114
+
115
+ it 'does nothing' do
116
+ expect(@got).to eq given
117
+ end
118
+
119
+ end
120
+
121
+
122
+ context 'roman-ji given' do
123
+ let(:given) { 'ano iihatoovo no sukitootta kaze' }
124
+ it 'returns katakana' do
125
+ expect(@got).to eq 'アノ イイハトオヴォ ノ スキトオッタ カゼ'
126
+ end
127
+ end
128
+
129
+ context 'ン given' do
130
+ context 'in nn' do
131
+ let(:given){'kouennji himonnya'}
132
+
133
+ it 'handles nn as ン' do
134
+ expect(@got).to eq 'コウエンジ ヒモンヤ'
135
+ end
136
+ end
137
+
138
+ context 'in n' do
139
+ let(:given){'kouenji himonya'}
140
+
141
+ it 'handles n as ン' do
142
+ expect(@got).to eq 'コウエンジ ヒモニャ'
143
+ end
144
+ end
145
+ end
146
+
147
+ context 'the Hepburn system given' do
148
+ let(:given){'nishinippori hambaagu'}
149
+
150
+ it 'handles in the Hepburn system' do
151
+ expect(@got).to eq 'ニシニッポリ ハンバアグ'
152
+ end
153
+ end
154
+
155
+ context 'the kunrei system given' do
156
+ let(:given){'nisinippori hanbaagu'}
157
+
158
+ it 'handles in the kunrei system' do
159
+ expect(@got).to eq 'ニシニッポリ ハンバアグ'
160
+ end
161
+ end
162
+ end
163
+
164
+ describe "#kanaroman" do
165
+ let(:given){ '' }
166
+ before do
167
+ @got = RomanKana.kanaroman given
168
+ end
169
+
170
+ context 'roman-ji given' do
171
+ let(:given) { 'ano iihatoovo no sukitootta kaze' }
172
+
173
+ it 'does nothing' do
174
+ expect(@got).to eq given
175
+ end
176
+ end
177
+
178
+ context 'hiragana given' do
179
+ let(:given) { 'あのいーはとーゔぉのすきとおったかぜ' }
180
+
181
+ it 'converts to roman-ji' do
182
+ expect(@got).to eq 'anoiihatoovonosukitoottakaze'
183
+ end
184
+
185
+ end
186
+
187
+ context 'katakana given' do
188
+ let(:given) { 'アノイーハトーヴォノスキトオッタカゼ' }
189
+
190
+ it 'converts to roman-ji' do
191
+ expect(@got).to eq 'anoiihatoovonosukitoottakaze'
192
+ end
193
+ end
194
+
195
+ context 'ン given' do
196
+ context 'in nn' do
197
+ let(:given){'コウエンジ ヒモンヤ'}
198
+
199
+ it 'handles ン' do
200
+ expect(@got).to eq 'kouenji himonya'
201
+ end
202
+ end
203
+ end
204
+
205
+ context 'ー and ッ given' do
206
+ let(:given){'マークザッカーバーグ アーノルドシュワルツネッガー'}
207
+
208
+ it 'changes ー' do
209
+ expect(@got).to eq 'maakuzakkaabaagu aanorudoshuwarutsuneggaa'
210
+ end
211
+ end
30
212
  end
31
213
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
1
3
  begin
2
4
  require 'rspec'
3
5
  rescue LoadError
@@ -0,0 +1,55 @@
1
+ #coding:UTF-8
2
+ require 'spec_helper'
3
+ describe String do
4
+
5
+ describe '#roman_to_hiragana' do
6
+ it 'converts roman-ji to hiragana' do
7
+ expect('ほげほげhogehogeホゲホゲ'.roman_to_hiragana).to eq 'ほげほげほげほげホゲホゲ'
8
+ end
9
+ end
10
+
11
+ describe '#roman_to_katakana' do
12
+ it 'converts roman-ji to katakana' do
13
+ expect('ほげほげhogehogeホゲホゲ'.roman_to_katakana).to eq 'ほげほげホゲホゲホゲホゲ'
14
+ end
15
+ end
16
+
17
+ describe '#katakana_to_roman' do
18
+ it 'converts katakana to roman' do
19
+ expect('ほげほげhogehogeホゲホゲ'.katakana_to_roman).to eq 'ほげほげhogehogehogehoge'
20
+ end
21
+ end
22
+
23
+ describe '#hiragana_to_roman' do
24
+ it 'converts hiragana to roman' do
25
+ expect('ほげほげhogehogeホゲホゲ'.hiragana_to_roman).to eq 'hogehogehogehogeホゲホゲ'
26
+ end
27
+ end
28
+
29
+ describe '#to_roman' do
30
+ it 'converts all kana to roman' do
31
+ expect('ほげほげhogehogeホゲホゲ'.to_roman).to eq 'hogehogehogehogehogehoge'
32
+ end
33
+ end
34
+
35
+
36
+ describe '#to_hiragana' do
37
+ it 'converts all roman-ji and katakana to hiragana' do
38
+ expect('ほげほげhogehogeホゲホゲ'.to_hiragana).to eq 'ほげほげほげほげほげほげ'
39
+ end
40
+ end
41
+
42
+ describe '#to_katakana' do
43
+ it 'converts all roman-ji and hiragana to katakana' do
44
+ expect('ほげほげhogehogeホゲホゲ'.to_katakana).to eq 'ホゲホゲホゲホゲホゲホゲ'
45
+ end
46
+ end
47
+
48
+
49
+ describe '#to_hankaku' do
50
+ it 'converts katkana and zenkaku alphabet to hankaku' do
51
+ expect('ほげほげhogehogeホゲホゲhogehoge'.to_hankaku).to eq 'ほげほげhogehogeホゲホゲhogehoge'
52
+ end
53
+ end
54
+
55
+ end
data/tasks/rspec.rake CHANGED
@@ -14,8 +14,8 @@ EOS
14
14
  exit(0)
15
15
  end
16
16
 
17
- #desc "Run the specs under spec/models"
18
- #RSpec::Core::RakeTask.new do |t|
19
- # t.rspec_opts = ['--options', "spec/spec.opts"]
20
- # t.pattern = 'spec/**/*_spec.rb'
21
- #end
17
+ desc "Run the specs under spec/models"
18
+ RSpec::Core::RakeTask.new do |t|
19
+ t.rspec_opts = ['--options', "spec/spec.opts"]
20
+ t.pattern = 'spec/**/*_spec.rb'
21
+ end
metadata CHANGED
@@ -1,102 +1,115 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: romankana
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - ymrl
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-05-30 00:00:00.000000000 Z
11
+ date: 2014-04-29 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rdoc
16
- requirement: &72014840 !ruby/object:Gem::Requirement
17
- none: false
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '3.10'
19
+ version: '1.5'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *72014840
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
25
27
  - !ruby/object:Gem::Dependency
26
- name: newgem
27
- requirement: &72014310 !ruby/object:Gem::Requirement
28
- none: false
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
- version: 1.5.3
33
+ version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *72014310
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
- name: hoe
38
- requirement: &72013420 !ruby/object:Gem::Requirement
39
- none: false
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ~>
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
- version: '3.0'
47
+ version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *72013420
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  description: Roman Alphabet <-> Japanese Hiragana/Katkakana Convert Library for Ruby
48
56
  email:
49
57
  - ymrl@ymrl.net
50
58
  executables: []
51
59
  extensions: []
52
- extra_rdoc_files:
53
- - History.txt
54
- - Manifest.txt
55
- - PostInstall.txt
56
- - README.rdoc
60
+ extra_rdoc_files: []
57
61
  files:
58
- - History.txt
62
+ - .gitignore
63
+ - .travis.yml
64
+ - Gemfile
59
65
  - Manifest.txt
60
- - PostInstall.txt
61
66
  - README.rdoc
62
67
  - Rakefile
63
68
  - lib/romankana.rb
64
- - lib/romankana/romankana.rb
65
- - lib/romankana/r2k.rb
66
69
  - lib/romankana/k2r.rb
70
+ - lib/romankana/r2k.rb
71
+ - lib/romankana/romankana.rb
72
+ - lib/romankana/string.rb
73
+ - lib/romankana/utils.rb
74
+ - lib/romankana/version.rb
75
+ - romankana.gemspec
67
76
  - script/console
68
77
  - script/destroy
69
78
  - script/generate
70
79
  - spec/romankana_spec.rb
71
80
  - spec/spec.opts
72
81
  - spec/spec_helper.rb
82
+ - spec/string_spec.rb
73
83
  - tasks/rspec.rake
74
84
  - test/romankana_test.rb
75
- - .gemtest
76
85
  homepage: https://github.com/ymrl/romankana
77
- licenses: []
86
+ licenses:
87
+ - MIT
88
+ metadata: {}
78
89
  post_install_message:
79
- rdoc_options:
80
- - --main
81
- - README.rdoc
90
+ rdoc_options: []
82
91
  require_paths:
83
92
  - lib
84
93
  required_ruby_version: !ruby/object:Gem::Requirement
85
- none: false
86
94
  requirements:
87
- - - ! '>='
95
+ - - '>='
88
96
  - !ruby/object:Gem::Version
89
97
  version: '0'
90
98
  required_rubygems_version: !ruby/object:Gem::Requirement
91
- none: false
92
99
  requirements:
93
- - - ! '>='
100
+ - - '>='
94
101
  - !ruby/object:Gem::Version
95
102
  version: '0'
96
103
  requirements: []
97
- rubyforge_project: romankana
98
- rubygems_version: 1.8.11
104
+ rubyforge_project:
105
+ rubygems_version: 2.0.3
99
106
  signing_key:
100
- specification_version: 3
107
+ specification_version: 4
101
108
  summary: Roman Alphabet <-> Japanese Hiragana/Katkakana Convert Library for Ruby
102
- test_files: []
109
+ test_files:
110
+ - spec/romankana_spec.rb
111
+ - spec/spec.opts
112
+ - spec/spec_helper.rb
113
+ - spec/string_spec.rb
114
+ - test/romankana_test.rb
115
+ has_rdoc:
data/.gemtest DELETED
File without changes
data/History.txt DELETED
@@ -1,4 +0,0 @@
1
- === 0.0.1 2011-04-07
2
-
3
- * 1 major enhancement:
4
- * Initial release
data/PostInstall.txt DELETED
@@ -1,7 +0,0 @@
1
-
2
- For more information on romankana, see http://romankana.rubyforge.org
3
-
4
- NOTE: Change this information in PostInstall.txt
5
- You can also delete it if you don't want it.
6
-
7
-