gimei 0.4.0 → 1.0.1

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