gimei 0.4.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35cb5bc32bc45d0b86828d6752260ea90a70c7fdd4151bd0e425425eee7cb8ca
4
- data.tar.gz: a3cbf8105592bbd8bb38753bfa5acca44ceea9675ffe9963e89dd74ab91f8e04
3
+ metadata.gz: 8b901f4ad99a870c4fccfe3c2b45d091efb1419db562b59b8a21ee28b789110d
4
+ data.tar.gz: 37857e0546c84936dab79d8731c0cf2dd5462819138a8bc038107632c11b76dc
5
5
  SHA512:
6
- metadata.gz: 07b60a6af8982950d8786c4ee4a8d2522b4e2381e70c73e9c686238818b3117ecce405aeae08a1334d32e774caaf23e18ce0f21a6ed017679306c701415e50dc
7
- data.tar.gz: b7fcac6a4a5101ba31053153b274c0994b4b27bdf453c370ab4fa50cbde32c361357e05e4a865deb5631e316b2af7737442f03a55ef28bd8c8a207b04e909819
6
+ metadata.gz: bf30c05cf967c15a0eba2713428baa490e0ffe2b0034286db8079f9a39a669685e74a6449b7d65bfe9c52418abfa6dfe85f242d3e69ec5c784b9ce47e6a198b4
7
+ data.tar.gz: fdbace6cac90a3cbab0d93edb084fbff7babfa729efcb2b2e31da9eba3663b0d611d79abdc3861c98b3200c620a95ba50e91ed5e5ab9e8d4927173f3df601722
@@ -0,0 +1,61 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - synchronize
11
+ - reopened
12
+
13
+ jobs:
14
+ test:
15
+ runs-on: ubuntu-latest
16
+
17
+ container: ${{ matrix.ruby }}
18
+
19
+ strategy:
20
+ fail-fast: false
21
+
22
+ matrix:
23
+ ruby:
24
+ - ruby:2.2
25
+ - ruby:2.3
26
+ - ruby:2.4
27
+ - ruby:2.5
28
+ - ruby:2.6
29
+ - ruby:2.7
30
+ - ruby:3.0
31
+ - ruby:3.1
32
+ - rubylang/ruby:master-nightly-bionic
33
+ include:
34
+ - ruby: rubylang/ruby:master-nightly-bionic
35
+ allow_failures: "true"
36
+
37
+ steps:
38
+ - uses: actions/checkout@v2
39
+
40
+ - name: Cache vendor/bundle
41
+ uses: actions/cache@v1
42
+ id: cache_gem
43
+ with:
44
+ path: vendor/bundle
45
+ key: v1-gem-${{ runner.os }}-${{ matrix.ruby }}-${{ github.sha }}
46
+ restore-keys: |
47
+ v1-gem-${{ runner.os }}-${{ matrix.ruby }}-
48
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
49
+
50
+ - name: bundle update
51
+ run: |
52
+ set -xe
53
+ bundle config path vendor/bundle
54
+ bundle update --jobs $(nproc) --retry 3
55
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
56
+
57
+ - name: Run test
58
+ run: |
59
+ set -xe
60
+ bundle exec rake
61
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
data/CHANGELOG.md CHANGED
@@ -1,8 +1,30 @@
1
+ ## 1.0.1
2
+
3
+ - Ruby 3.1のサポート[@willnet](https://github.com/willnet) (https://github.com/willnet/gimei/pull/48)
4
+ - 他言語による実装リストの更新 [@youpong](https://github.com/youpong) (https://github.com/willnet/gimei/pull/47)
5
+ - READMEに「再現可能なランダムデータ」の節を追加 [@youpong](https://github.com/youpong) (https://github.com/willnet/gimei/pull/45)
6
+
7
+ ## 1.0.0
8
+
9
+ * データの読み込みを遅延させた [@willnet](https://github.com/willnet) (https://github.com/willnet/gimei/pull/41)
10
+ * Ruby2.2以下のサポートを削除 [@willnet](https://github.com/willnet)
11
+ * [Drop ruby suport < 2.2.0 · willnet/gimei@d02363f](https://github.com/willnet/gimei/commit/d02363f2fc6ffa31a531576cb9f599a01e25194f)
12
+ * 現時点ではテストしていないだけなので、未サポートのRubyでも動作はすると思いますが保証外です
13
+
14
+ ## 0.5.1
15
+
16
+ * 住所データの更新 [kossy0701 (kawagoekeisuke)](https://github.com/kossy0701) (https://github.com/willnet/gimei/pull/38)
17
+
18
+ ## 0.5.0
19
+
20
+ * Gimei.uniqueメソッドの追加 [@willnet](https://github.com/willnet) (https://github.com/willnet/gimei/pull/35)
21
+ * 乱数生成器を Config 経由で設定できるようにした [@purintai](https://github.com/purintai) ( https://github.com/willnet/gimei/pull/34 )
22
+
1
23
  ## 0.4.0
2
24
 
3
25
  * Gimei#genderメソッドの追加 - [@nard-tech](https://github.com/nard-tech)
4
- * Ruby 1.9のサポートの停止
5
- * Ruby 2.7をサポート開始
26
+ * Ruby 1.9のサポートを停止
27
+ * Ruby 2.7のサポートを開始
6
28
 
7
29
  ## 0.3.0
8
30
 
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,29 +164,74 @@ 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
 
199
+ ### 再現可能なランダムデータ
200
+
201
+ 下記のように乱数生成器を設定することで、再現性のあるランダムデータを生成できます。
202
+
203
+ ```ruby
204
+ Gimei.config.rng = Random.new(42)
205
+ Gimei.name.kanji #=> "飯島 誠吾"
206
+ Gimei.address.kanji #=> "熊本県日進市東場内"
207
+
208
+ Gimei.config.rng = Random.new(42)
209
+ Gimei.name.kanji #=> "飯島 誠吾"
210
+ Gimei.address.kanji #=> "熊本県日進市東場内"
211
+ ```
212
+
125
213
  ## Supported versions
126
214
 
127
- - 2.0.0
128
- - 2.1.x
129
215
  - 2.2.x
130
216
  - 2.3.x
131
217
  - 2.4.x
132
218
  - 2.5.x
133
219
  - 2.6.x
134
220
  - 2.7.x
221
+ - 3.0.x
222
+ - 3.1.x
135
223
 
136
224
  ## 他言語による実装
137
225
 
138
- - [mattn/go-gimei](https://github.com/mattn/go-gimei)
139
- - [moznion/gimei-java](https://github.com/moznion/gimei-java)
140
- - [nabetama/gimei](https://github.com/nabetama/gimei)
141
- - [gongo/emacs-gimei](https://github.com/gongo/emacs-gimei)
142
- - [ma2gedev/gimei_ex](https://github.com/ma2gedev/gimei_ex)
143
- - [demiglacesource/node-gimei](https://github.com/demiglacesource/node-gimei)
144
- - [matarillo/dot-gimei](https://github.com/matarillo/dot-gimei)
145
- - [abcb2/type-gimei](https://github.com/abcb2/type-gimei)
226
+ - .NET [matarillo/dot-gimei](https://github.com/matarillo/dot-gimei)
227
+ - Elixir [ma2gedev/gimei_ex](https://github.com/ma2gedev/gimei_ex)
228
+ - Emacs Lisp [gongo/emacs-gimei](https://github.com/gongo/emacs-gimei)
229
+ - Go [mattn/go-gimei](https://github.com/mattn/go-gimei)
230
+ - Java [moznion/gimei-java](https://github.com/moznion/gimei-java)
231
+ - Node.js [demiglacesource/node-gimei](https://github.com/demiglacesource/node-gimei)
232
+ - Perl [youpong/Data-Gimei](https://github.com/youpong/Data-Gimei)
233
+ - Python [nabetama/gimei](https://github.com/nabetama/gimei)
234
+ - TypeScript [abcb2/type-gimei](https://github.com/abcb2/type-gimei)
146
235
 
147
236
  ## Installation
148
237
 
data/gimei.gemspec CHANGED
@@ -19,7 +19,6 @@ 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')
24
23
  gem.add_development_dependency('coveralls')
25
24
  end
@@ -326,6 +326,7 @@ addresses:
326
326
  - ['栗原市', 'くりはらし', 'クリハラシ']
327
327
  - ['東松島市', 'ひがしまつしまし', 'ヒガシマツシマシ']
328
328
  - ['大崎市', 'おおさきし', 'オオサキシ']
329
+ - ['富谷市', 'とみやし', 'トミヤシ']
329
330
  - ['刈田郡蔵王町', 'かったぐんざおうまち', 'カッタグンザオウマチ']
330
331
  - ['刈田郡七ヶ宿町', 'かったぐんしちかしゅくまち', 'カッタグンシチカシュクマチ']
331
332
  - ['柴田郡大河原町', 'しばたぐんおおがわらまち', 'シバタグンオオガワラマチ']
@@ -340,7 +341,6 @@ addresses:
340
341
  - ['宮城郡利府町', 'みやぎぐんりふちょう', 'ミヤギグンリフチョウ']
341
342
  - ['黒川郡大和町', 'くろかわぐんたいわちょう', 'クロカワグンタイワチョウ']
342
343
  - ['黒川郡大郷町', 'くろかわぐんおおさとちょう', 'クロカワグンオオサトチョウ']
343
- - ['黒川郡富谷町', 'くろかわぐんとみやまち', 'クロカワグントミヤマチ']
344
344
  - ['黒川郡大衡村', 'くろかわぐんおおひらむら', 'クロカワグンオオヒラムラ']
345
345
  - ['加美郡色麻町', 'かみぐんしかまちょう', 'カミグンシカマチョウ']
346
346
  - ['加美郡加美町', 'かみぐんかみまち', 'カミグンカミマチ']
@@ -1352,7 +1352,7 @@ addresses:
1352
1352
  - ['小野市', 'おのし', 'オノシ']
1353
1353
  - ['三田市', 'さんだし', 'サンダシ']
1354
1354
  - ['加西市', 'かさいし', 'カサイシ']
1355
- - ['篠山市', 'ささやまし', 'ササヤマシ']
1355
+ - ['丹波篠山市', 'たんばささやまし', 'タンバササヤマシ']
1356
1356
  - ['養父市', 'やぶし', 'ヤブシ']
1357
1357
  - ['丹波市', 'たんばし', 'タンバシ']
1358
1358
  - ['南あわじ市', 'みなみあわじし', 'ミナミアワジシ']
@@ -1693,7 +1693,7 @@ addresses:
1693
1693
  - ['朝倉市', 'あさくらし', 'アサクラシ']
1694
1694
  - ['みやま市', 'みやまし', 'ミヤマシ']
1695
1695
  - ['糸島市', 'いとしまし', 'イトシマシ']
1696
- - ['筑紫郡那珂川町', 'ちくしぐんなかがわまち', 'チクシグンナカガワマチ']
1696
+ - ['那珂川市', 'なかがわし', 'ナカガワシ']
1697
1697
  - ['糟屋郡宇美町', 'かすやぐんうみまち', 'カスヤグンウミマチ']
1698
1698
  - ['糟屋郡篠栗町', 'かすやぐんささぐりまち', 'カスヤグンササグリマチ']
1699
1699
  - ['糟屋郡志免町', 'かすやぐんしめまち', 'カスヤグンシメマチ']
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
@@ -0,0 +1,9 @@
1
+ class Gimei
2
+ class Config
3
+ attr_accessor :rng
4
+
5
+ def initialize(rng: Random.new)
6
+ @rng = rng
7
+ end
8
+ end
9
+ end
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
@@ -1,3 +1,3 @@
1
1
  class Gimei
2
- VERSION = "0.4.0"
2
+ VERSION = "1.0.1"
3
3
  end
data/lib/gimei.rb CHANGED
@@ -3,12 +3,12 @@ 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
9
11
 
10
- NAMES = YAML.load_file(File.expand_path(File.join('..', 'data', 'names.yml'), __FILE__))
11
- ADDRESSES = YAML.load_file(File.expand_path(File.join('..', 'data', 'addresses.yml'), __FILE__))
12
12
  GENDERS = [:male, :female].freeze
13
13
 
14
14
  def_delegators :@name, :gender, :kanji, :hiragana, :katakana, :first, :last, :male?, :female?, :romaji
@@ -20,19 +20,53 @@ class Gimei
20
20
  class << self
21
21
  extend Forwardable
22
22
 
23
- def_delegators :name, :kanji, :hiragana, :katakana, :first, :last, :romaji
24
23
  def_delegators Gimei::Name, :male, :female
25
24
  def_delegators :address, :prefecture, :city, :town
26
25
 
27
- def name
28
- Name.new
26
+ def name(gender = nil)
27
+ Name.new(gender)
28
+ end
29
+
30
+ def names
31
+ @names ||= YAML.load_file(File.expand_path(File.join('..', 'data', 'names.yml'), __FILE__))
32
+ end
33
+
34
+ def addresses
35
+ @addresses ||= YAML.load_file(File.expand_path(File.join('..', 'data', 'addresses.yml'), __FILE__))
36
+ end
37
+
38
+ %i[kanji hiragana katakana romaji first last].each do |method_name|
39
+ define_method(method_name) do |gender = nil|
40
+ name(gender).public_send(method_name)
41
+ end
29
42
  end
30
43
 
31
44
  def address
32
45
  Address.new
33
46
  end
47
+
48
+ def unique(max_retries = 10_000)
49
+ return @unique if defined? @unique
50
+
51
+ @unique = UniqueGenerator.new(self, max_retries)
52
+
53
+ %i[name last first hiragana katakana romaji address prefecture city town].each do |method_name|
54
+ @unique.define_unique_method(method_name)
55
+ end
56
+
57
+ %i[male female kanji].each do |method_name|
58
+ @unique.define_unique_method(method_name, :name)
59
+ end
60
+
61
+ @unique
62
+ end
63
+
64
+ def config
65
+ @config ||= Config.new
66
+ end
34
67
  end
35
68
 
69
+
36
70
  def initialize(gender = nil)
37
71
  @name = Name.new(gender)
38
72
  @address = Address.new
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[#{Moji.zen}]+\z/)
8
- _(Gimei.address.to_s).must_match(/\A[#{Moji.zen}]+\z/)
9
- _(Gimei.address.prefecture.kanji).must_match(/\A[#{Moji.zen}]+\z/)
10
- _(Gimei.address.prefecture.to_s).must_match(/\A[#{Moji.zen}]+\z/)
11
- _(Gimei.address.city.kanji).must_match(/\A[#{Moji.zen}]+\z/)
12
- _(Gimei.address.city.to_s).must_match(/\A[#{Moji.zen}]+\z/)
13
- _(Gimei.address.town.kanji).must_match(/\A[#{Moji.zen}]+\z/)
14
- _(Gimei.address.town.to_s).must_match(/\A[#{Moji.zen}]+\z/)
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[#{Moji.zen}]+\z/)
17
- _(Gimei.prefecture.to_s).must_match(/\A[#{Moji.zen}]+\z/)
18
- _(Gimei.city.kanji).must_match(/\A[#{Moji.zen}]+\z/)
19
- _(Gimei.city.to_s).must_match(/\A[#{Moji.zen}]+\z/)
20
- _(Gimei.town.kanji).must_match(/\A[#{Moji.zen}]+\z/)
21
- _(Gimei.town.to_s).must_match(/\A[#{Moji.zen}]+\z/)
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[#{Moji.zen}\s]+\z/)
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[#{Moji.zen}\s]+\z/)
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[#{Moji.zen}\s]+\z/)
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[#{Moji.zen}\s]+\z/)
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[#{Moji.zen}\s]+\z/)
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#{Moji.zen}+\z/)
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#{Moji.zen}+\z/)
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#{Moji.zen}+\z/)
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#{Moji.zen}+\z/)
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,12 @@ Coveralls.wear!
8
8
 
9
9
  require 'gimei'
10
10
  require 'minitest/autorun'
11
- require 'moji'
11
+
12
+ def zenkaku_regexp
13
+ /\p{Hiragana}|\p{Katakana}|[一-龠々]/
14
+ end
15
+
16
+ def zenkaku_or_space_regexp
17
+ /\p{Hiragana}|\p{Katakana}|[一-龠々]|\s/
18
+ end
19
+
@@ -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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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(: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.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - willnet
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-26 00:00:00.000000000 Z
11
+ date: 2022-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: romaji
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: moji
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: minitest
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -88,8 +74,8 @@ extensions: []
88
74
  extra_rdoc_files: []
89
75
  files:
90
76
  - ".coveralls.yml"
77
+ - ".github/workflows/test.yml"
91
78
  - ".gitignore"
92
- - ".travis.yml"
93
79
  - CHANGELOG.md
94
80
  - Gemfile
95
81
  - LICENSE.txt
@@ -101,17 +87,20 @@ files:
101
87
  - lib/data/names.yml
102
88
  - lib/gimei.rb
103
89
  - lib/gimei/address.rb
90
+ - lib/gimei/config.rb
104
91
  - lib/gimei/name.rb
92
+ - lib/gimei/unique_generator.rb
105
93
  - lib/gimei/version.rb
106
94
  - spec/address_spec.rb
107
95
  - spec/gimei_spec.rb
108
96
  - spec/name_spec.rb
109
97
  - spec/spec_helper.rb
98
+ - spec/unique_spec.rb
110
99
  homepage: https://github.com/willnet/gimei
111
100
  licenses:
112
101
  - MIT
113
102
  metadata: {}
114
- post_install_message:
103
+ post_install_message:
115
104
  rdoc_options: []
116
105
  require_paths:
117
106
  - lib
@@ -126,8 +115,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
115
  - !ruby/object:Gem::Version
127
116
  version: '0'
128
117
  requirements: []
129
- rubygems_version: 3.1.2
130
- signing_key:
118
+ rubygems_version: 3.2.33
119
+ signing_key:
131
120
  specification_version: 4
132
121
  summary: random Japanese name and address generator. support kanji, hiragana, and
133
122
  katakana
@@ -136,3 +125,4 @@ test_files:
136
125
  - spec/gimei_spec.rb
137
126
  - spec/name_spec.rb
138
127
  - spec/spec_helper.rb
128
+ - spec/unique_spec.rb
data/.travis.yml DELETED
@@ -1,13 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - "2.0.0"
4
- - "2.1.10"
5
- - "2.2.7"
6
- - "2.3.4"
7
- - "2.4.1"
8
- - "2.5.0"
9
- - "2.6.0"
10
- - "2.7.0"
11
-
12
- before_install:
13
- - gem update bundler