gimei 0.2.0 → 1.0.0

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
- SHA1:
3
- metadata.gz: 6fd8b6ca2ca9d8bdf3bbac3fcd6ef5975eb79696
4
- data.tar.gz: d74ef4820a28495ba91fb6142d576d7c451b9a62
2
+ SHA256:
3
+ metadata.gz: c647940ae0bd7a3df1f2bb8cdebfe33703701f3edf8495ffc72ed918a1cbb066
4
+ data.tar.gz: 0eafe0d2bb191084624b9dd7e37f77b15a7bb4dcff9e6c1fab92b1a192e01b0f
5
5
  SHA512:
6
- metadata.gz: 8680e297e54c961c8b4a0363ee84fa432dec1619ebe44ce58e1357efe2bb91396cfcbf7863a55e108d660cfbef6f84d6a2b1ce4511ce558d3c764eb865b8f43b
7
- data.tar.gz: a118471e381eed4dc6a13a7ab8d88a2978db4785c8f1cd4c8146f2f80bcffa485a5f0c3bd2e374b2acb70b3d0541c44b8b8ff6202a70e07b695fd238bf3fc817
6
+ metadata.gz: bbb471e7f12d534bf5dc1f88f71e7784a62ebf4f390a4ea83d107406c620f141c79f2a09bb51a76399ef109d81ad55fcd2803f25508faf34b923249e8df7e764
7
+ data.tar.gz: 78a71e6f0d6515422cecd32f52302eaee4edc60a34374126032b1a76df268d6ea465f54c3955defc68af7bfbbcf1f5c25fed83e7a36854fa91b19b782104ce2a
@@ -0,0 +1,60 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
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
+ - rubylang/ruby:master-nightly-bionic
32
+ include:
33
+ - ruby: rubylang/ruby:master-nightly-bionic
34
+ allow_failures: "true"
35
+
36
+ steps:
37
+ - uses: actions/checkout@v2
38
+
39
+ - name: Cache vendor/bundle
40
+ uses: actions/cache@v1
41
+ id: cache_gem
42
+ with:
43
+ path: vendor/bundle
44
+ key: v1-gem-${{ runner.os }}-${{ matrix.ruby }}-${{ github.sha }}
45
+ restore-keys: |
46
+ v1-gem-${{ runner.os }}-${{ matrix.ruby }}-
47
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
48
+
49
+ - name: bundle update
50
+ run: |
51
+ set -xe
52
+ bundle config path vendor/bundle
53
+ bundle update --jobs $(nproc) --retry 3
54
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
55
+
56
+ - name: Run test
57
+ run: |
58
+ set -xe
59
+ bundle exec rake
60
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
data/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ## 1.0.0
2
+
3
+ * データの読み込みを遅延させた [@willnet](https://github.com/willnet) (https://github.com/willnet/gimei/pull/41)
4
+ * Ruby2.2以下のサポートを削除 [@willnet](https://github.com/willnet)
5
+ * [Drop ruby suport < 2.2.0 · willnet/gimei@d02363f](https://github.com/willnet/gimei/commit/d02363f2fc6ffa31a531576cb9f599a01e25194f)
6
+ * 現時点ではテストしていないだけなので、未サポートのRubyでも動作はすると思いますが保証外です
7
+
8
+ ## 0.5.1
9
+
10
+ * 住所データの更新 [kossy0701 (kawagoekeisuke)](https://github.com/kossy0701) (https://github.com/willnet/gimei/pull/38)
11
+
12
+ ## 0.5.0
13
+
14
+ * Gimei.uniqueメソッドの追加 [@willnet](https://github.com/willnet) (https://github.com/willnet/gimei/pull/35)
15
+ * 乱数生成器を Config 経由で設定できるようにした [@purintai](https://github.com/purintai) ( https://github.com/willnet/gimei/pull/34 )
16
+
17
+ ## 0.4.0
18
+
19
+ * Gimei#genderメソッドの追加 - [@nard-tech](https://github.com/nard-tech)
20
+ * Ruby 1.9のサポートを停止
21
+ * Ruby 2.7のサポートを開始
22
+
23
+ ## 0.3.0
24
+
25
+ * ローマ字対応 - [@takkanm](https://github.com/takkanm)
26
+
1
27
  ## 0.2.0
2
28
 
3
29
  * 住所対応 - [@miyohide](https://github.com/miyohide)
@@ -5,7 +31,7 @@
5
31
  ## 0.1.0
6
32
 
7
33
  * サンプルデータの拡充 - [@2celeb](https://github.com/2celeb)
8
- * `Gimei.male`, `Gimei.female` 等の男女指定用のメソッドを追加 - [@willnet](https://github.com/willnet)
34
+ * `Gimei.male`, `Gimei.female` 等の男女指定用のメソッドを追加 - [@2celeb](https://github.com/2celeb)
9
35
 
10
36
  ```ruby
11
37
  gimei = Gimei.male
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Gimei
2
2
 
3
- [![Build Status](https://travis-ci.org/willnet/gimei.png)](https://travis-ci.org/willnet/gimei)
4
- [![Coverage Status](https://coveralls.io/repos/willnet/gimei/badge.png)](https://coveralls.io/r/willnet/gimei)
5
- [![Gem Version](https://badge.fury.io/rb/gimei.png)](http://badge.fury.io/rb/gimei)
6
- [![endorse](https://api.coderwall.com/willnet/endorsecount.png)](https://coderwall.com/willnet)
3
+ [![Travis](https://img.shields.io/travis/willnet/gimei.svg)](https://travis-ci.org/willnet/gimei)
4
+ [![Coveralls](https://coveralls.io/repos/willnet/gimei/badge.svg)](https://coveralls.io/r/willnet/gimei)
5
+ [![Code Climate](https://codeclimate.com/github/willnet/gimei/badges/gpa.svg)](https://codeclimate.com/github/willnet/gimei)
6
+ [![Gem](https://img.shields.io/gem/v/gimei.svg)](https://rubygems.org/gems/gimei)
7
7
 
8
- gimei は、日本人の名前や、日本の住所をランダムに返すライブラリです。テストの時などに使います。似たようなライブラリに[faker](https://github.com/stympy/faker)があります。[faker](https://github.com/stympy/faker)はとても優れたライブラリで、多言語対応もしていますが、ふりがな(フリガナ)は流石に対応していません。gimei ふりがな(及びフリガナ)に対応しています。
8
+ gimei は、日本人の名前や、日本の住所をランダムに返すライブラリです。テストの時などに使います。似たようなライブラリに[faker](https://github.com/stympy/faker)があります。[faker](https://github.com/stympy/faker)はとても優れたライブラリで、多言語対応もしていますが、ふりがな(フリガナ)は流石に対応していません。gimei はふりがな(及びフリガナ)に対応しています。
9
9
 
10
10
 
11
11
  ## 使い方
@@ -16,45 +16,100 @@ gimei は、日本人の名前や、日本の住所をランダムに返すラ
16
16
 
17
17
  ```ruby
18
18
  gimei = Gimei.name
19
- gimei.kanji #=> "斎藤 陽菜"
20
- gimei.hiragana #=> "さいとう はるな"
21
- gimei.katakana #=> "サイトウ ハルナ"
22
- gimei.last.kanji #=> "斎藤"
23
- gimei.last.hiragana #=> "さいとう"
24
- gimei.last.katakana #=> "サイトウ"
25
- gimei.first.kanji #=> "陽菜"
19
+ gimei.kanji #=> "斎藤 陽菜"
20
+ gimei.hiragana #=> "さいとう はるな"
21
+ gimei.katakana #=> "サイトウ ハルナ"
22
+ gimei.romaji #=> "Haruna Saitou"
23
+ gimei.gender #=> :female
24
+ gimei.male? #=> false
25
+ gimei.female? #=> true
26
+ gimei.last.kanji #=> "斎藤"
27
+ gimei.last.hiragana #=> "さいとう"
28
+ gimei.last.katakana #=> "サイトウ"
29
+ gimei.last.romaji #=> "Saitou"
30
+ gimei.first.kanji #=> "陽菜"
26
31
  gimei.first.hiragana #=> "はるな"
27
32
  gimei.first.katakana #=> "ハルナ"
33
+ gimei.first.romaji #=> "Haruna"
28
34
  ```
29
35
 
30
36
  下記のように男性/女性の名前を返すことを明示的に指定できます。`Gimei.name` の場合は男女の名前を等確率で返します。
31
37
 
32
38
  ```ruby
33
39
  gimei = Gimei.male
34
- gimei.male? #=> true
40
+ gimei.male? #=> true
35
41
  gimei.female? #=> false
36
- gimei.kanji #=> "小林 顕士"
42
+ gimei.gender #=> :male
43
+ gimei.kanji #=> "小林 顕士"
37
44
 
38
45
  gimei = Gimei.female
39
- gimei.male? #=> false
46
+ gimei.male? #=> false
40
47
  gimei.female? #=> true
41
- gimei.kanji #=> "根本 彩世"
48
+ gimei.gender #=> :female
49
+ gimei.kanji #=> "根本 彩世"
42
50
  ```
43
51
 
44
- 漢字、ひらがな、カタカナどれか一種類だけ取得できればよい場合には、下記のように短縮して書くことも出来ます。
52
+ 漢字、ひらがな、カタカナ、ローマ字どれか一種類だけ取得できればよい場合には、下記のように短縮して書くことも出来ます。
45
53
 
46
54
  ```ruby
47
- Gimei.kanji #=> "伊藤 結衣"
48
- Gimei.hiragana #=> "いとう みさき"
49
- Gimei.katakana #=> "タカハシ ユイナ"
50
- Gimei.last.kanji #=> "清水"
51
- Gimei.last.hiragana #=> "いとう"
52
- Gimei.last.katakana #=> "コバヤシ"
53
- Gimei.first.kanji #=> "結菜"
55
+ Gimei.kanji #=> "伊藤 結衣"
56
+ Gimei.hiragana #=> "いとう みさき"
57
+ Gimei.katakana #=> "タカハシ ユイナ"
58
+ Gimei.romaji #=> "Miki Obara"
59
+ Gimei.last.kanji #=> "清水"
60
+ Gimei.last.hiragana #=> "いとう"
61
+ Gimei.last.katakana #=> "コバヤシ"
62
+ Gimei.last.romaji #=> "Wakabayashi"
63
+ Gimei.first.kanji #=> "結菜"
54
64
  Gimei.first.hiragana #=> "ここあ"
55
65
  Gimei.first.katakana #=> "ヤマト"
66
+ Gimei.first.romaji #=> "Noriyuki"
56
67
  ```
57
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
+
58
113
  出力される名前の候補となるデータは `lib/data/names.yml` にあるので、必要であればファイルを修正してください。
59
114
 
60
115
  ### 住所をランダムで返す
@@ -67,21 +122,25 @@ address.kanji # => 岡山県大島郡大和村稲木町
67
122
  address.to_s # => 岡山県大島郡大和村稲木町
68
123
  address.hiragana # => おかやまけんおおしまぐんやまとそんいなぎちょう
69
124
  address.katakana # => オカヤマケンオオシマグンヤマトソンイナギチョウ
125
+ address.romaji # => Okayamaken Ooshimagunyamatoson Inagicho
70
126
 
71
127
  address.prefecture.kanji # => 岡山県
72
128
  address.prefecture.to_s # => 岡山県
73
129
  address.prefecture.hiragana # => おかやまけん
74
130
  address.prefecture.katakana # => オカヤマケン
131
+ address.prefecture.romaji # => Okayamaken
75
132
 
76
133
  address.city.kanji # => 大島郡大和村
77
134
  address.city.to_s # => 大島郡大和村
78
135
  address.city.hiragana # => おおしまぐんやまとそん
79
136
  address.city.katakana # => オオシマグンヤマトソン
137
+ address.city.romaji # => Ooshimagunyamatoson
80
138
 
81
139
  address.town.kanji # => 稲木町
82
140
  address.town.to_s # => 稲木町
83
141
  address.town.hiragana # => いなぎちょう
84
142
  address.town.katakana # => イナギチョウ
143
+ address.town.romaji # => Inagicho
85
144
  ```
86
145
 
87
146
  省略形も用意しています。
@@ -91,19 +150,73 @@ Gimei.prefecture.kanji # => 青森県
91
150
  Gimei.prefecture.to_s # => 滋賀県
92
151
  Gimei.prefecture.hiragana # => やまがたけん
93
152
  Gimei.prefecture.katakana # => チバケン
153
+ Gimei.prefecture.romaji # => Wakayamaken
94
154
 
95
155
  Gimei.city.kanji # => 利根郡昭和村
96
156
  Gimei.city.hiragana # => うべし
97
157
  Gimei.city.katakana # => カモグンヤオツチョウ
158
+ Gimei.city.romaji # => Itanogunaizumichou
98
159
 
99
160
  Gimei.town.kanji # => 竹野
100
161
  Gimei.town.to_s # => 富久山町南小泉
101
162
  Gimei.town.hiragana # => じょうしんでん
102
163
  Gimei.town.katakana # => イケナイ
164
+ Gimei.town.romaji # => Heisei
165
+ ```
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 の結果を消去
103
195
  ```
104
196
 
105
197
  出力される住所の候補となるデータは `lib/data/addresses.yml` にあるので、必要であればファイルを修正してください。
106
198
 
199
+ ## Supported versions
200
+
201
+ - 2.2.x
202
+ - 2.3.x
203
+ - 2.4.x
204
+ - 2.5.x
205
+ - 2.6.x
206
+ - 2.7.x
207
+ - 3.0.x
208
+
209
+ ## 他言語による実装
210
+
211
+ - [mattn/go-gimei](https://github.com/mattn/go-gimei)
212
+ - [moznion/gimei-java](https://github.com/moznion/gimei-java)
213
+ - [nabetama/gimei](https://github.com/nabetama/gimei)
214
+ - [gongo/emacs-gimei](https://github.com/gongo/emacs-gimei)
215
+ - [ma2gedev/gimei_ex](https://github.com/ma2gedev/gimei_ex)
216
+ - [demiglacesource/node-gimei](https://github.com/demiglacesource/node-gimei)
217
+ - [matarillo/dot-gimei](https://github.com/matarillo/dot-gimei)
218
+ - [abcb2/type-gimei](https://github.com/abcb2/type-gimei)
219
+
107
220
  ## Installation
108
221
 
109
222
  Add this line to your application's Gemfile:
data/_config.yml ADDED
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-cayman
data/gimei.gemspec CHANGED
@@ -17,8 +17,8 @@ Gem::Specification.new do |gem|
17
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
+ gem.add_dependency('romaji')
20
21
  gem.add_development_dependency('rake')
21
- gem.add_development_dependency('moji')
22
22
  gem.add_development_dependency('minitest')
23
23
  gem.add_development_dependency('coveralls')
24
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.rb CHANGED
@@ -3,15 +3,15 @@ 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
- GENDER = [:male, :female].freeze
12
+ GENDERS = [:male, :female].freeze
13
13
 
14
- def_delegators :@name, :kanji, :hiragana, :katakana, :first, :last, :male?, :female?
14
+ def_delegators :@name, :gender, :kanji, :hiragana, :katakana, :first, :last, :male?, :female?, :romaji
15
15
  def_delegators :@address, :prefecture, :city, :town
16
16
  alias_method :to_s, :kanji
17
17
 
@@ -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
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