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 +5 -5
- data/.github/workflows/test.yml +60 -0
- data/CHANGELOG.md +27 -1
- data/README.md +137 -24
- data/_config.yml +1 -0
- data/gimei.gemspec +1 -1
- data/lib/data/addresses.yml +3 -3
- data/lib/gimei.rb +41 -7
- data/lib/gimei/address.rb +19 -3
- data/lib/gimei/config.rb +9 -0
- data/lib/gimei/name.rb +32 -19
- data/lib/gimei/unique_generator.rb +47 -0
- data/lib/gimei/version.rb +1 -1
- data/spec/address_spec.rb +50 -32
- data/spec/gimei_spec.rb +52 -25
- data/spec/name_spec.rb +63 -24
- data/spec/spec_helper.rb +9 -1
- data/spec/unique_spec.rb +399 -0
- metadata +12 -8
- data/.travis.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c647940ae0bd7a3df1f2bb8cdebfe33703701f3edf8495ffc72ed918a1cbb066
|
4
|
+
data.tar.gz: 0eafe0d2bb191084624b9dd7e37f77b15a7bb4dcff9e6c1fab92b1a192e01b0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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` 等の男女指定用のメソッドを追加 -
|
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
|
-
[![
|
4
|
-
[![
|
5
|
-
[![
|
6
|
-
[![
|
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.
|
23
|
-
gimei.
|
24
|
-
gimei.
|
25
|
-
gimei.
|
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?
|
40
|
+
gimei.male? #=> true
|
35
41
|
gimei.female? #=> false
|
36
|
-
gimei.
|
42
|
+
gimei.gender #=> :male
|
43
|
+
gimei.kanji #=> "小林 顕士"
|
37
44
|
|
38
45
|
gimei = Gimei.female
|
39
|
-
gimei.male?
|
46
|
+
gimei.male? #=> false
|
40
47
|
gimei.female? #=> true
|
41
|
-
gimei.
|
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.
|
51
|
-
Gimei.last.
|
52
|
-
Gimei.last.
|
53
|
-
Gimei.
|
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
|
data/lib/data/addresses.yml
CHANGED
@@ -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
|
-
|
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
|