gimei 0.4.0 → 0.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -2
- data/README.md +74 -0
- data/gimei.gemspec +1 -1
- data/lib/gimei.rb +31 -3
- data/lib/gimei/address.rb +3 -3
- data/lib/gimei/config.rb +9 -0
- data/lib/gimei/name.rb +10 -5
- data/lib/gimei/unique_generator.rb +47 -0
- data/lib/gimei/version.rb +1 -1
- data/spec/address_spec.rb +14 -14
- data/spec/gimei_spec.rb +3 -3
- data/spec/name_spec.rb +6 -6
- data/spec/spec_helper.rb +10 -1
- data/spec/unique_spec.rb +399 -0
- metadata +8 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 27f074f6bdfe0c87b52c92fd3d407b092752776022b6d84197d2c91966ed69d7
|
|
4
|
+
data.tar.gz: 53bcf822b645c25fb235c3b45b5b82a4d4613192b6b9b253477cb4c28cc4bfec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 47eaca2ac1937f88e14c7fe904db52c30a799f19ae993939bc83a884ae1ca44bb013a1143ba2c98dbda15acddf44b5eb0d89595ee6564764dfa5eaeba27cf9e5
|
|
7
|
+
data.tar.gz: 510d2295139449a6a8b652947d94cbf756c331002cca6f3835f238e9e3f5c6c73395d04dd4d319c1ae9d64b94e30a590d8ce80fe0cbb59ae155e30bc04a10d01
|
data/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
## 0.5.0
|
|
2
|
+
|
|
3
|
+
* Gimei.uniqueメソッドの追加 [@willnet](https://github.com/willnet) (https://github.com/willnet/gimei/pull/35)
|
|
4
|
+
* 乱数生成器を Config 経由で設定できるようにした [@purintai](https://github.com/purintai) ( https://github.com/willnet/gimei/pull/34 )
|
|
5
|
+
|
|
1
6
|
## 0.4.0
|
|
2
7
|
|
|
3
8
|
* Gimei#genderメソッドの追加 - [@nard-tech](https://github.com/nard-tech)
|
|
4
|
-
* Ruby 1.9
|
|
5
|
-
* Ruby 2.7
|
|
9
|
+
* Ruby 1.9のサポートを停止
|
|
10
|
+
* Ruby 2.7のサポートを開始
|
|
6
11
|
|
|
7
12
|
## 0.3.0
|
|
8
13
|
|
data/README.md
CHANGED
|
@@ -66,6 +66,50 @@ Gimei.first.katakana #=> "ヤマト"
|
|
|
66
66
|
Gimei.first.romaji #=> "Noriyuki"
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
同じ名前を二度取得したくない場合には、以下のように`unique`を挟みます。次のようにすると、利用した名前をGimei内で保持することで必ず一意な名前を返すようにできます。
|
|
70
|
+
|
|
71
|
+
```ruby
|
|
72
|
+
Gimei.unique.name
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
上記の場合は、フルネームの漢字が一意であることを保証します。つまり、次のように姓や名の単位では重複することもありえます。
|
|
76
|
+
|
|
77
|
+
```ruby
|
|
78
|
+
Gimei.unique.name.kanji #=> "前島 真一"
|
|
79
|
+
Gimei.unique.name.kanji #=> "神谷 真一"
|
|
80
|
+
Gimei.unique.name.kanji #=> "前島 太郎"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
これを避けたいときは次のように`last`や`first`を利用してください。これは姓や名の単位で一意な名前を返します。
|
|
84
|
+
|
|
85
|
+
```ruby
|
|
86
|
+
Gimei.unique.last
|
|
87
|
+
Gimei.unique.first
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
この場合でも、ふりがな(フリガナ)の単位では重複することがあります。
|
|
91
|
+
|
|
92
|
+
```ruby
|
|
93
|
+
Gimei.unique.first.hiragana #=> "しんいち"
|
|
94
|
+
Gimei.unique.first.hiragana #=> "しんいち"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
もし名前の候補が枯渇するなど、一意な名前を返せない場合はエラーになります。
|
|
98
|
+
|
|
99
|
+
これまで利用した名前のリストを消去したい場合は、次のようにします。
|
|
100
|
+
|
|
101
|
+
```ruby
|
|
102
|
+
Gimei.unique.clear # 全体を消去
|
|
103
|
+
Gimei.unique.clear(:name) # Gimei.unique.name の結果を消去
|
|
104
|
+
Gimei.unique.clear(:first) # Gimei.unique.first の結果を消去
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
次のメソッドで生成された名前は`Gimei.unique.clear(:name)`で消去します。
|
|
108
|
+
|
|
109
|
+
- `Gimei.unique.male`
|
|
110
|
+
- `Gimei.unique.female`
|
|
111
|
+
- `Gimei.unique.kanji`
|
|
112
|
+
|
|
69
113
|
出力される名前の候補となるデータは `lib/data/names.yml` にあるので、必要であればファイルを修正してください。
|
|
70
114
|
|
|
71
115
|
### 住所をランダムで返す
|
|
@@ -120,6 +164,36 @@ Gimei.town.katakana # => イケナイ
|
|
|
120
164
|
Gimei.town.romaji # => Heisei
|
|
121
165
|
```
|
|
122
166
|
|
|
167
|
+
同じ住所を二度取得したくない場合には、以下のように`unique`を挟みます。次のようにすると、利用した住所をGimei内で保持することで必ず一意な名前を返すようにできます。
|
|
168
|
+
|
|
169
|
+
```ruby
|
|
170
|
+
address = Gimei.unique.address
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
上記の場合は、住所全体が一意であることを保証します。つまり、次のように県や市町村の単位では重複することもありえます。
|
|
174
|
+
|
|
175
|
+
```ruby
|
|
176
|
+
Gimei.unique.address.prefecture.kanji #=> 東京都
|
|
177
|
+
Gimei.unique.address.prefecture.kanji #=> 東京都
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
もし県や市町村の単位で一意であることを保証したいのであれば、次のように短縮形を使います。
|
|
181
|
+
|
|
182
|
+
```ruby
|
|
183
|
+
Gimei.unique.prefecture.kanji #=> 東京都
|
|
184
|
+
Gimei.unique.prefecture.kanji #=> 神奈川県
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
もし住所の候補が枯渇するなど、一意な名前を返せない場合はエラーになります。
|
|
188
|
+
|
|
189
|
+
これまで利用した住所のリストを消去したい場合は、次のようにします。
|
|
190
|
+
|
|
191
|
+
```ruby
|
|
192
|
+
Gimei.unique.clear # 全体を消去
|
|
193
|
+
Gimei.unique.clear(:address) # Gimei.unique.address の結果を消去
|
|
194
|
+
Gimei.unique.clear(:prefecture) # Gimei.unique.prefecture の結果を消去
|
|
195
|
+
```
|
|
196
|
+
|
|
123
197
|
出力される住所の候補となるデータは `lib/data/addresses.yml` にあるので、必要であればファイルを修正してください。
|
|
124
198
|
|
|
125
199
|
## Supported versions
|
data/gimei.gemspec
CHANGED
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
|
|
|
19
19
|
gem.require_paths = ["lib"]
|
|
20
20
|
gem.add_dependency('romaji')
|
|
21
21
|
gem.add_development_dependency('rake')
|
|
22
|
-
gem.add_development_dependency('moji')
|
|
23
22
|
gem.add_development_dependency('minitest')
|
|
23
|
+
gem.add_development_dependency('minitest-stub-const')
|
|
24
24
|
gem.add_development_dependency('coveralls')
|
|
25
25
|
end
|
data/lib/gimei.rb
CHANGED
|
@@ -3,6 +3,8 @@ require 'yaml'
|
|
|
3
3
|
require 'gimei/version'
|
|
4
4
|
require 'gimei/name'
|
|
5
5
|
require 'gimei/address'
|
|
6
|
+
require 'gimei/unique_generator'
|
|
7
|
+
require 'gimei/config'
|
|
6
8
|
|
|
7
9
|
class Gimei
|
|
8
10
|
extend Forwardable
|
|
@@ -20,19 +22,45 @@ class Gimei
|
|
|
20
22
|
class << self
|
|
21
23
|
extend Forwardable
|
|
22
24
|
|
|
23
|
-
def_delegators :name, :kanji, :hiragana, :katakana, :first, :last, :romaji
|
|
24
25
|
def_delegators Gimei::Name, :male, :female
|
|
25
26
|
def_delegators :address, :prefecture, :city, :town
|
|
26
27
|
|
|
27
|
-
def name
|
|
28
|
-
Name.new
|
|
28
|
+
def name(gender = nil)
|
|
29
|
+
Name.new(gender)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
%i[kanji hiragana katakana romaji first last].each do |method_name|
|
|
33
|
+
define_method(method_name) do |gender = nil|
|
|
34
|
+
name(gender).public_send(method_name)
|
|
35
|
+
end
|
|
29
36
|
end
|
|
30
37
|
|
|
31
38
|
def address
|
|
32
39
|
Address.new
|
|
33
40
|
end
|
|
41
|
+
|
|
42
|
+
def unique(max_retries = 10_000)
|
|
43
|
+
return @unique if defined? @unique
|
|
44
|
+
|
|
45
|
+
@unique = UniqueGenerator.new(self, max_retries)
|
|
46
|
+
|
|
47
|
+
%i[name last first hiragana katakana romaji address prefecture city town].each do |method_name|
|
|
48
|
+
@unique.define_unique_method(method_name)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
%i[male female kanji].each do |method_name|
|
|
52
|
+
@unique.define_unique_method(method_name, :name)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
@unique
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def config
|
|
59
|
+
@config ||= Config.new
|
|
60
|
+
end
|
|
34
61
|
end
|
|
35
62
|
|
|
63
|
+
|
|
36
64
|
def initialize(gender = nil)
|
|
37
65
|
@name = Name.new(gender)
|
|
38
66
|
@address = Address.new
|
data/lib/gimei/address.rb
CHANGED
|
@@ -43,7 +43,7 @@ class Gimei::Address
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def initialize
|
|
46
|
-
@prefectures = Gimei::ADDRESSES['addresses']['prefecture'].sample
|
|
46
|
+
@prefectures = Gimei::ADDRESSES['addresses']['prefecture'].sample(random: Gimei.config.rng)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
alias_method :to_s, :kanji
|
|
@@ -67,7 +67,7 @@ class Gimei::Address
|
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
def initialize
|
|
70
|
-
@cities = Gimei::ADDRESSES['addresses']['city'].sample
|
|
70
|
+
@cities = Gimei::ADDRESSES['addresses']['city'].sample(random: Gimei.config.rng)
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
alias_method :to_s, :kanji
|
|
@@ -91,7 +91,7 @@ class Gimei::Address
|
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
def initialize
|
|
94
|
-
@towns = Gimei::ADDRESSES['addresses']['town'].sample
|
|
94
|
+
@towns = Gimei::ADDRESSES['addresses']['town'].sample(random: Gimei.config.rng)
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
alias_method :to_s, :kanji
|
data/lib/gimei/config.rb
ADDED
data/lib/gimei/name.rb
CHANGED
|
@@ -5,7 +5,6 @@ class Gimei::Name
|
|
|
5
5
|
|
|
6
6
|
class << self
|
|
7
7
|
extend Forwardable
|
|
8
|
-
def_delegators :new, :kanji, :hiragana, :katakana, :first, :last, :romaji
|
|
9
8
|
|
|
10
9
|
def male
|
|
11
10
|
new(:male)
|
|
@@ -14,10 +13,16 @@ class Gimei::Name
|
|
|
14
13
|
def female
|
|
15
14
|
new(:female)
|
|
16
15
|
end
|
|
16
|
+
|
|
17
|
+
%i[kanji hiragana katakana romaji first last].each do |method_name|
|
|
18
|
+
define_method(method_name) do |gender = nil|
|
|
19
|
+
new(gender).public_send(method_name)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
17
22
|
end
|
|
18
23
|
|
|
19
24
|
def initialize(gender = nil)
|
|
20
|
-
@gender = gender || Gimei::GENDERS.sample
|
|
25
|
+
@gender = gender || Gimei::GENDERS.sample(random: Gimei.config.rng)
|
|
21
26
|
@first = First.new @gender
|
|
22
27
|
@last = Last.new
|
|
23
28
|
end
|
|
@@ -63,8 +68,8 @@ class Gimei::Name
|
|
|
63
68
|
def_delegators :@name, :kanji, :hiragana, :katakana, :to_s, :romaji
|
|
64
69
|
|
|
65
70
|
def initialize(gender = nil)
|
|
66
|
-
@gender = gender || Gimei::GENDERS.sample
|
|
67
|
-
@name = NameWord.new(Gimei::NAMES['first_name'][@gender.to_s].sample)
|
|
71
|
+
@gender = gender || Gimei::GENDERS.sample(random: Gimei.config.rng)
|
|
72
|
+
@name = NameWord.new(Gimei::NAMES['first_name'][@gender.to_s].sample(random: Gimei.config.rng))
|
|
68
73
|
end
|
|
69
74
|
|
|
70
75
|
def male?
|
|
@@ -81,7 +86,7 @@ class Gimei::Name
|
|
|
81
86
|
def_delegators :@name, :kanji, :hiragana, :katakana, :to_s, :romaji
|
|
82
87
|
|
|
83
88
|
def initialize
|
|
84
|
-
@name = NameWord.new(Gimei::NAMES['last_name'].sample)
|
|
89
|
+
@name = NameWord.new(Gimei::NAMES['last_name'].sample(random: Gimei.config.rng))
|
|
85
90
|
end
|
|
86
91
|
end
|
|
87
92
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class Gimei
|
|
2
|
+
class RetryLimitExceeded < StandardError; end
|
|
3
|
+
|
|
4
|
+
class UniqueGenerator
|
|
5
|
+
class << self
|
|
6
|
+
def previous_results
|
|
7
|
+
@previous_results ||= Hash.new { |hash, key| hash[key] = Set.new }
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def initialize(klass, max_retries)
|
|
12
|
+
@klass = klass
|
|
13
|
+
@max_retries = max_retries
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def previous_results
|
|
17
|
+
self.class.previous_results
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def clear(key = nil)
|
|
21
|
+
if key
|
|
22
|
+
previous_results[key.to_sym].clear
|
|
23
|
+
else
|
|
24
|
+
previous_results.clear
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def define_unique_method(method_name, previous_result_key = method_name)
|
|
29
|
+
define_singleton_method method_name do |*args|
|
|
30
|
+
max_retries.times do
|
|
31
|
+
result = klass.public_send(method_name, *args)
|
|
32
|
+
|
|
33
|
+
next if previous_results[previous_result_key].include?(result.to_s)
|
|
34
|
+
|
|
35
|
+
previous_results[previous_result_key] << result.to_s
|
|
36
|
+
return result
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
raise RetryLimitExceeded, "Retry limit exceeded for #{method_name}"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
attr_reader :klass, :max_retries
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/gimei/version.rb
CHANGED
data/spec/address_spec.rb
CHANGED
|
@@ -4,21 +4,21 @@ require_relative 'spec_helper'
|
|
|
4
4
|
describe Gimei do
|
|
5
5
|
describe '#kanji and #to_s' do
|
|
6
6
|
it '全角文字が返ること' do
|
|
7
|
-
_(Gimei.address.kanji).must_match(/\A
|
|
8
|
-
_(Gimei.address.to_s).must_match(/\A
|
|
9
|
-
_(Gimei.address.prefecture.kanji).must_match(/\A
|
|
10
|
-
_(Gimei.address.prefecture.to_s).must_match(/\A
|
|
11
|
-
_(Gimei.address.city.kanji).must_match(/\A
|
|
12
|
-
_(Gimei.address.city.to_s).must_match(/\A
|
|
13
|
-
_(Gimei.address.town.kanji).must_match(/\A
|
|
14
|
-
_(Gimei.address.town.to_s).must_match(/\A
|
|
7
|
+
_(Gimei.address.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
8
|
+
_(Gimei.address.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
9
|
+
_(Gimei.address.prefecture.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
10
|
+
_(Gimei.address.prefecture.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
11
|
+
_(Gimei.address.city.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
12
|
+
_(Gimei.address.city.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
13
|
+
_(Gimei.address.town.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
14
|
+
_(Gimei.address.town.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
15
15
|
|
|
16
|
-
_(Gimei.prefecture.kanji).must_match(/\A
|
|
17
|
-
_(Gimei.prefecture.to_s).must_match(/\A
|
|
18
|
-
_(Gimei.city.kanji).must_match(/\A
|
|
19
|
-
_(Gimei.city.to_s).must_match(/\A
|
|
20
|
-
_(Gimei.town.kanji).must_match(/\A
|
|
21
|
-
_(Gimei.town.to_s).must_match(/\A
|
|
16
|
+
_(Gimei.prefecture.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
17
|
+
_(Gimei.prefecture.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
18
|
+
_(Gimei.city.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
19
|
+
_(Gimei.city.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
20
|
+
_(Gimei.town.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
21
|
+
_(Gimei.town.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
data/spec/gimei_spec.rb
CHANGED
|
@@ -43,19 +43,19 @@ describe Gimei do
|
|
|
43
43
|
|
|
44
44
|
describe '#kanji' do
|
|
45
45
|
it '全角文字とスペースが返ること' do
|
|
46
|
-
_(Gimei.new.kanji).must_match(/\A
|
|
46
|
+
_(Gimei.new.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
describe '#to_s' do
|
|
51
51
|
it '全角文字とスペースが返ること' do
|
|
52
|
-
_(Gimei.new.to_s).must_match(/\A
|
|
52
|
+
_(Gimei.new.to_s).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
describe '.kanji' do
|
|
57
57
|
it '全角文字とスペースが返ること' do
|
|
58
|
-
_(Gimei.kanji).must_match(/\A
|
|
58
|
+
_(Gimei.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
data/spec/name_spec.rb
CHANGED
|
@@ -36,7 +36,7 @@ describe Gimei::Name do
|
|
|
36
36
|
|
|
37
37
|
describe '.kanji' do
|
|
38
38
|
it '全角文字とスペースが返ること' do
|
|
39
|
-
_(Gimei::Name.kanji).must_match(/\A
|
|
39
|
+
_(Gimei::Name.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|
|
@@ -67,7 +67,7 @@ describe Gimei::Name do
|
|
|
67
67
|
|
|
68
68
|
describe '#kanji' do
|
|
69
69
|
it '全角文字とスペースが返ること' do
|
|
70
|
-
_(Gimei::Name.new.kanji).must_match(/\A
|
|
70
|
+
_(Gimei::Name.new.kanji).must_match(/\A#{zenkaku_or_space_regexp}+\z/)
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
|
|
@@ -129,7 +129,7 @@ describe Gimei::Name::First do
|
|
|
129
129
|
|
|
130
130
|
describe '#kanji' do
|
|
131
131
|
it '全角文字が返ること' do
|
|
132
|
-
_(Gimei::Name::First.new.kanji).must_match(/\A#{
|
|
132
|
+
_(Gimei::Name::First.new.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
133
133
|
end
|
|
134
134
|
end
|
|
135
135
|
|
|
@@ -147,7 +147,7 @@ describe Gimei::Name::First do
|
|
|
147
147
|
|
|
148
148
|
describe '#to_s' do
|
|
149
149
|
it '全角文字が返ること' do
|
|
150
|
-
_(Gimei::Name::First.new.to_s).must_match(/\A#{
|
|
150
|
+
_(Gimei::Name::First.new.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
151
151
|
end
|
|
152
152
|
end
|
|
153
153
|
|
|
@@ -163,7 +163,7 @@ describe Gimei::Name::Last do
|
|
|
163
163
|
|
|
164
164
|
describe '#kanji' do
|
|
165
165
|
it '全角文字が返ること' do
|
|
166
|
-
_(@name.kanji).must_match(/\A#{
|
|
166
|
+
_(@name.kanji).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
167
167
|
end
|
|
168
168
|
end
|
|
169
169
|
|
|
@@ -181,7 +181,7 @@ describe Gimei::Name::Last do
|
|
|
181
181
|
|
|
182
182
|
describe '#to_s' do
|
|
183
183
|
it '全角文字が返ること' do
|
|
184
|
-
_(@name.to_s).must_match(/\A#{
|
|
184
|
+
_(@name.to_s).must_match(/\A#{zenkaku_regexp}+\z/)
|
|
185
185
|
end
|
|
186
186
|
end
|
|
187
187
|
|
data/spec/spec_helper.rb
CHANGED
|
@@ -8,4 +8,13 @@ Coveralls.wear!
|
|
|
8
8
|
|
|
9
9
|
require 'gimei'
|
|
10
10
|
require 'minitest/autorun'
|
|
11
|
-
require '
|
|
11
|
+
require 'minitest/stub_const'
|
|
12
|
+
|
|
13
|
+
def zenkaku_regexp
|
|
14
|
+
/\p{Hiragana}|\p{Katakana}|[一-龠々]/
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def zenkaku_or_space_regexp
|
|
18
|
+
/\p{Hiragana}|\p{Katakana}|[一-龠々]|\s/
|
|
19
|
+
end
|
|
20
|
+
|
data/spec/unique_spec.rb
ADDED
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
require_relative 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'Gimei.unique' do
|
|
5
|
+
before do
|
|
6
|
+
Gimei.unique.clear
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe '#clear' do
|
|
10
|
+
describe '名前が枯渇してからclearを実行し、再度名前を取得しようとしたとき' do
|
|
11
|
+
it 'Gimei::RetryLimitExceededed例外が発生しないこと' do
|
|
12
|
+
Gimei.stub_const(:NAMES, {
|
|
13
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
14
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
15
|
+
}) do
|
|
16
|
+
Gimei.unique.male
|
|
17
|
+
Gimei.unique.clear
|
|
18
|
+
Gimei.unique.male
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '名前が枯渇してからclear(:name)を実行し再度名前を取得しようとしたとき' do
|
|
24
|
+
it 'Gimei::RetryLimitExceededed例外が発生しないこと' do
|
|
25
|
+
Gimei.stub_const(:NAMES, {
|
|
26
|
+
'first_name' => {'male' => [%w[真一 しんいち シンイチ]]},
|
|
27
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
28
|
+
}) do
|
|
29
|
+
Gimei.unique.male
|
|
30
|
+
Gimei.unique.clear(:name)
|
|
31
|
+
Gimei.unique.male
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe '名前が枯渇してからclear(:address)を実行し再度名前を取得しようとしたとき' do
|
|
37
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
|
38
|
+
Gimei.stub_const(:NAMES, {
|
|
39
|
+
'first_name' => {'male' => [%w[真一 しんいち シンイチ]]},
|
|
40
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
41
|
+
}) do
|
|
42
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
43
|
+
Gimei.unique.male
|
|
44
|
+
Gimei.unique.clear(:address)
|
|
45
|
+
Gimei.unique.male
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe '#male' do
|
|
53
|
+
describe '名前が枯渇していないとき' do
|
|
54
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
|
55
|
+
Gimei.stub_const(:NAMES, {
|
|
56
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
57
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
|
58
|
+
}) do
|
|
59
|
+
_([Gimei.unique.male.kanji, Gimei.unique.male.kanji].sort).must_equal ['前島 真一', '神谷 真一']
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe '名前が枯渇したとき' do
|
|
65
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
|
66
|
+
Gimei.stub_const(:NAMES, {
|
|
67
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
68
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
69
|
+
}) do
|
|
70
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
71
|
+
Gimei.unique.male
|
|
72
|
+
Gimei.unique.male
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe '#female' do
|
|
80
|
+
describe '名前が枯渇していないとき' do
|
|
81
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
|
82
|
+
Gimei.stub_const(:NAMES, {
|
|
83
|
+
'first_name' => { 'female' => [%w[花子 はなこ ハナコ]] },
|
|
84
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
|
85
|
+
}) do
|
|
86
|
+
_([Gimei.unique.female.kanji, Gimei.unique.female.kanji].sort).must_equal ['前島 花子', '神谷 花子']
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe '名前が枯渇したとき' do
|
|
92
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
|
93
|
+
Gimei.stub_const(:NAMES, {
|
|
94
|
+
'first_name' => { 'female' => [%w[花子 はなこ ハナコ]] },
|
|
95
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
96
|
+
}) do
|
|
97
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
98
|
+
Gimei.unique.female
|
|
99
|
+
Gimei.unique.female
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe '#first' do
|
|
107
|
+
describe '名が枯渇していないとき' do
|
|
108
|
+
it '一意な名(漢字単位)が返ること' do
|
|
109
|
+
Gimei.stub_const(:NAMES, {
|
|
110
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ], %w[真二 しんじ シンジ]] },
|
|
111
|
+
'last_name' => %w[]
|
|
112
|
+
}) do
|
|
113
|
+
_([Gimei.unique.first(:male).kanji, Gimei.unique.first(:male).kanji].sort).must_equal %w[真一 真二]
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe '名が枯渇したとき' do
|
|
119
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
|
120
|
+
Gimei.stub_const(:NAMES, {
|
|
121
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
122
|
+
'last_name' => []
|
|
123
|
+
}) do
|
|
124
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
125
|
+
Gimei.unique.first(:male)
|
|
126
|
+
Gimei.unique.first(:male)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
describe '#last' do
|
|
134
|
+
describe '姓が枯渇していないとき' do
|
|
135
|
+
it '一意な姓(漢字単位)が返ること' do
|
|
136
|
+
Gimei.stub_const(:NAMES, {
|
|
137
|
+
'first_name' => { 'male' => [], 'female' => [] },
|
|
138
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
|
139
|
+
}) do
|
|
140
|
+
_([Gimei.unique.last.kanji, Gimei.unique.last.kanji].sort).must_equal %w[前島 神谷]
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
describe '姓が枯渇したとき' do
|
|
146
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
|
147
|
+
Gimei.stub_const(:NAMES, {
|
|
148
|
+
'first_name' => { 'male' => [], 'female' => [] },
|
|
149
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
150
|
+
}) do
|
|
151
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
152
|
+
Gimei.unique.last
|
|
153
|
+
Gimei.unique.last
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
describe '#kanji' do
|
|
161
|
+
describe '名前が枯渇していないとき' do
|
|
162
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
|
163
|
+
Gimei.stub_const(:NAMES, {
|
|
164
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
165
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
|
166
|
+
}) do
|
|
167
|
+
_([Gimei.unique.kanji(:male), Gimei.unique.kanji(:male)].sort).must_equal ['前島 真一', '神谷 真一']
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
describe '名前が枯渇したとき' do
|
|
173
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
|
174
|
+
Gimei.stub_const(:NAMES, {
|
|
175
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
176
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
177
|
+
}) do
|
|
178
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
179
|
+
Gimei.unique.kanji(:male)
|
|
180
|
+
Gimei.unique.kanji(:male)
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
describe '#hiragana' do
|
|
188
|
+
describe '名前が枯渇していないとき' do
|
|
189
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
|
190
|
+
Gimei.stub_const(:NAMES, {
|
|
191
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
192
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
|
193
|
+
}) do
|
|
194
|
+
_([Gimei.unique.hiragana(:male), Gimei.unique.hiragana(:male)].sort).must_equal ['かみや しんいち', 'まえしま しんいち']
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
describe '名前が枯渇したとき' do
|
|
200
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
|
201
|
+
Gimei.stub_const(:NAMES, {
|
|
202
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
203
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
204
|
+
}) do
|
|
205
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
206
|
+
Gimei.unique.hiragana(:male)
|
|
207
|
+
Gimei.unique.hiragana(:male)
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
describe '#katakana' do
|
|
215
|
+
describe '名前が枯渇していないとき' do
|
|
216
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
|
217
|
+
Gimei.stub_const(:NAMES, {
|
|
218
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
219
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
|
220
|
+
}) do
|
|
221
|
+
_([Gimei.unique.katakana(:male), Gimei.unique.katakana(:male)].sort).must_equal ['カミヤ シンイチ', 'マエシマ シンイチ']
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
describe '名前が枯渇したとき' do
|
|
227
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
|
228
|
+
Gimei.stub_const(:NAMES, {
|
|
229
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
230
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
231
|
+
}) do
|
|
232
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
233
|
+
Gimei.unique.katakana(:male)
|
|
234
|
+
Gimei.unique.katakana(:male)
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
describe '#romaji' do
|
|
242
|
+
describe '名前が枯渇していないとき' do
|
|
243
|
+
it '一意な名前(フルネームの漢字単位)が返ること' do
|
|
244
|
+
Gimei.stub_const(:NAMES, {
|
|
245
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
246
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
|
247
|
+
}) do
|
|
248
|
+
_([Gimei.unique.romaji(:male), Gimei.unique.romaji(:male)].sort).must_equal ['Shinichi Kamiya', 'Shinichi Maeshima']
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
describe '名前が枯渇したとき' do
|
|
254
|
+
it 'Gimei::RetryLimitExceededed例外が発生すること' do
|
|
255
|
+
Gimei.stub_const(:NAMES, {
|
|
256
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
|
257
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
|
258
|
+
}) do
|
|
259
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
260
|
+
Gimei.unique.romaji(:male)
|
|
261
|
+
Gimei.unique.romaji(:male)
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
describe '#address' do
|
|
269
|
+
describe '住所が枯渇していないとき' do
|
|
270
|
+
it '一意な住所(漢字単位)が返ること' do
|
|
271
|
+
Gimei.stub_const(:ADDRESSES, {
|
|
272
|
+
'addresses' => {
|
|
273
|
+
'prefecture' => [%w[東京都 とうきょうと トウキョウト]],
|
|
274
|
+
'city' => [%w[渋谷区 しぶやく シブヤク]],
|
|
275
|
+
'town' => [%w[恵比寿 えびす エビス], %w[蛭子 えびす エビス]]
|
|
276
|
+
}
|
|
277
|
+
}) do
|
|
278
|
+
_([Gimei.unique.address.kanji, Gimei.unique.address.kanji].sort).must_equal %w[東京都渋谷区恵比寿 東京都渋谷区蛭子]
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
describe '住所が枯渇したとき' do
|
|
284
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
|
285
|
+
Gimei.stub_const(:ADDRESSES, {
|
|
286
|
+
'addresses' => {
|
|
287
|
+
'prefecture' => [%w[東京都 とうきょうと トウキョウト]],
|
|
288
|
+
'city' => [%w[渋谷区 しぶやく シブヤク]],
|
|
289
|
+
'town' => [%w[恵比寿 えびす エビス]]
|
|
290
|
+
}
|
|
291
|
+
}) do
|
|
292
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
293
|
+
Gimei.unique.address
|
|
294
|
+
Gimei.unique.address
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
describe '#prefecture' do
|
|
302
|
+
describe '県が枯渇していないとき' do
|
|
303
|
+
it '一意な県が返ること' do
|
|
304
|
+
Gimei.stub_const(:ADDRESSES, {
|
|
305
|
+
'addresses' => {
|
|
306
|
+
'prefecture' => [%w[東京都 とうきょうと トウキョウト], %w[静岡県 しずおかけん シズオカケン]],
|
|
307
|
+
'city' => [],
|
|
308
|
+
'town' => []
|
|
309
|
+
}
|
|
310
|
+
}) do
|
|
311
|
+
_([Gimei.unique.prefecture.kanji, Gimei.unique.prefecture.kanji].sort).must_equal %w[東京都 静岡県]
|
|
312
|
+
end
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
describe '県が枯渇したとき' do
|
|
317
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
|
318
|
+
Gimei.stub_const(:ADDRESSES, {
|
|
319
|
+
'addresses' => {
|
|
320
|
+
'prefecture' => [%w[東京都 とうきょうと トウキョウト]],
|
|
321
|
+
'city' => [],
|
|
322
|
+
'town' => []
|
|
323
|
+
}
|
|
324
|
+
}) do
|
|
325
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
326
|
+
Gimei.unique.prefecture
|
|
327
|
+
Gimei.unique.prefecture
|
|
328
|
+
end
|
|
329
|
+
end
|
|
330
|
+
end
|
|
331
|
+
end
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
describe '#city' do
|
|
335
|
+
describe '市区町村が枯渇していないとき' do
|
|
336
|
+
it '一意な市区町村が返ること' do
|
|
337
|
+
Gimei.stub_const(:ADDRESSES, {
|
|
338
|
+
'addresses' => {
|
|
339
|
+
'prefecture' => [],
|
|
340
|
+
'city' => [%w[渋谷区 しぶやく シブヤク], %w[新宿区 しんじゅくく シンジュクク]],
|
|
341
|
+
'town' => []
|
|
342
|
+
}
|
|
343
|
+
}) do
|
|
344
|
+
_([Gimei.unique.city.kanji, Gimei.unique.city.kanji].sort).must_equal %w[新宿区 渋谷区]
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
describe '市区町村が枯渇したとき' do
|
|
350
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
|
351
|
+
Gimei.stub_const(:ADDRESSES, {
|
|
352
|
+
'addresses' => {
|
|
353
|
+
'prefecture' => [],
|
|
354
|
+
'city' => [%w[渋谷区 しぶやく シブヤク]],
|
|
355
|
+
'town' => []
|
|
356
|
+
}
|
|
357
|
+
}) do
|
|
358
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
359
|
+
Gimei.unique.city
|
|
360
|
+
Gimei.unique.city
|
|
361
|
+
end
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
describe '#town' do
|
|
368
|
+
describe 'その他住所が枯渇していないとき' do
|
|
369
|
+
it '一意なその他住所が返ること' do
|
|
370
|
+
Gimei.stub_const(:ADDRESSES, {
|
|
371
|
+
'addresses' => {
|
|
372
|
+
'prefecture' => [],
|
|
373
|
+
'city' => [],
|
|
374
|
+
'town' => [%w[恵比寿 えびす エビス], %w[蛭子 えびす エビス]]
|
|
375
|
+
}
|
|
376
|
+
}) do
|
|
377
|
+
_([Gimei.unique.town.kanji, Gimei.unique.town.kanji].sort).must_equal %w[恵比寿 蛭子]
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
describe 'その他住所が枯渇したとき' do
|
|
383
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
|
384
|
+
Gimei.stub_const(:ADDRESSES, {
|
|
385
|
+
'addresses' => {
|
|
386
|
+
'prefecture' => [],
|
|
387
|
+
'city' => [],
|
|
388
|
+
'town' => [%w[恵比寿 えびす エビス]]
|
|
389
|
+
}
|
|
390
|
+
}) do
|
|
391
|
+
assert_raises Gimei::RetryLimitExceeded do
|
|
392
|
+
Gimei.unique.town
|
|
393
|
+
Gimei.unique.town
|
|
394
|
+
end
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
end
|
|
398
|
+
end
|
|
399
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gimei
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- willnet
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-03-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: romaji
|
|
@@ -39,7 +39,7 @@ dependencies:
|
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: minitest
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - ">="
|
|
@@ -53,7 +53,7 @@ dependencies:
|
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: minitest
|
|
56
|
+
name: minitest-stub-const
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - ">="
|
|
@@ -101,12 +101,15 @@ files:
|
|
|
101
101
|
- lib/data/names.yml
|
|
102
102
|
- lib/gimei.rb
|
|
103
103
|
- lib/gimei/address.rb
|
|
104
|
+
- lib/gimei/config.rb
|
|
104
105
|
- lib/gimei/name.rb
|
|
106
|
+
- lib/gimei/unique_generator.rb
|
|
105
107
|
- lib/gimei/version.rb
|
|
106
108
|
- spec/address_spec.rb
|
|
107
109
|
- spec/gimei_spec.rb
|
|
108
110
|
- spec/name_spec.rb
|
|
109
111
|
- spec/spec_helper.rb
|
|
112
|
+
- spec/unique_spec.rb
|
|
110
113
|
homepage: https://github.com/willnet/gimei
|
|
111
114
|
licenses:
|
|
112
115
|
- MIT
|
|
@@ -136,3 +139,4 @@ test_files:
|
|
|
136
139
|
- spec/gimei_spec.rb
|
|
137
140
|
- spec/name_spec.rb
|
|
138
141
|
- spec/spec_helper.rb
|
|
142
|
+
- spec/unique_spec.rb
|