gimei 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +27 -0
- data/lib/gimei/name.rb +4 -1
- data/lib/gimei/version.rb +1 -1
- data/lib/gimei.rb +9 -2
- data/spec/gimei_spec.rb +26 -2
- data/spec/name_spec.rb +39 -3
- data/spec/unique_spec.rb +54 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bab55c81d075ac091f92fe6dd07a17aec5e05778d30f130d947fedde41fb8736
|
4
|
+
data.tar.gz: 05bef7aad6981ed3a968ff757aa2231de6a123f66fedbc50957728a606cb8363
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d56e36b028af21d23fd52a4cc296c00bc0e5742a678be15cca002e70269f3778fd4a081a78059504d748705307ee6f145ad290d0408bc6ce5d78eddc52e7a664
|
7
|
+
data.tar.gz: 1a922ee6c3ea7309382da24f41525da6a0f3b44bfbec45a6cce97757b61eac80ae5c8b2157f8aa4e853691f295c99aaf7db661d6c14b735745cc6ccdcf95fcb6
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 1.1.0
|
2
|
+
|
3
|
+
- Gimei::Name#family, #given を追加 [@nard-tech](https://github.com/nard-tech) (https://github.com/willnet/gimei/pull/50)
|
4
|
+
- テストケースの修正 [@nard-tech](https://github.com/nard-tech) https://github.com/willnet/gimei/pull/49
|
5
|
+
|
1
6
|
## 1.0.1
|
2
7
|
|
3
8
|
- Ruby 3.1のサポート[@willnet](https://github.com/willnet) (https://github.com/willnet/gimei/pull/48)
|
data/README.md
CHANGED
@@ -33,6 +33,20 @@ gimei.first.katakana #=> "ハルナ"
|
|
33
33
|
gimei.first.romaji #=> "Haruna"
|
34
34
|
```
|
35
35
|
|
36
|
+
`gimei.last`, `gimei.first` の代わりに、`gimei.family`, `gimei.given` を用いることもできます。
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
gimei.family.kanji #=> "斎藤"
|
40
|
+
gimei.family.hiragana #=> "さいとう"
|
41
|
+
gimei.family.katakana #=> "サイトウ"
|
42
|
+
gimei.family.romaji #=> "Saitou"
|
43
|
+
|
44
|
+
gimei.given.kanji #=> "陽菜"
|
45
|
+
gimei.given.hiragana #=> "はるな"
|
46
|
+
gimei.given.katakana #=> "ハルナ"
|
47
|
+
gimei.given.romaji #=> "Haruna"
|
48
|
+
```
|
49
|
+
|
36
50
|
下記のように男性/女性の名前を返すことを明示的に指定できます。`Gimei.name` の場合は男女の名前を等確率で返します。
|
37
51
|
|
38
52
|
```ruby
|
@@ -64,6 +78,16 @@ Gimei.first.kanji #=> "結菜"
|
|
64
78
|
Gimei.first.hiragana #=> "ここあ"
|
65
79
|
Gimei.first.katakana #=> "ヤマト"
|
66
80
|
Gimei.first.romaji #=> "Noriyuki"
|
81
|
+
|
82
|
+
Gimei.family.kanji #=> "黒沢"
|
83
|
+
Gimei.family.hiragana #=> "いずみ"
|
84
|
+
Gimei.family.katakana #=> "エノモト"
|
85
|
+
Gimei.family.romaji #=> "Okada"
|
86
|
+
|
87
|
+
Gimei.given.kanji #=> "航"
|
88
|
+
Gimei.given.hiragana #=> "まさみつ"
|
89
|
+
Gimei.given.katakana #=> "ユカ"
|
90
|
+
Gimei.given.romaji #=> "Haruto"
|
67
91
|
```
|
68
92
|
|
69
93
|
同じ名前を二度取得したくない場合には、以下のように`unique`を挟みます。次のようにすると、利用した名前をGimei内で保持することで必ず一意な名前を返すようにできます。
|
@@ -110,6 +134,9 @@ Gimei.unique.clear(:first) # Gimei.unique.first の結果を消去
|
|
110
134
|
- `Gimei.unique.female`
|
111
135
|
- `Gimei.unique.kanji`
|
112
136
|
|
137
|
+
`Gimei.unique.family` で生成された名前は `Gimei.unique.clear(:last)` で消去します。
|
138
|
+
また、`Gimei.unique.given` で生成された名前は `Gimei.unique.clear(:first)` で消去します。
|
139
|
+
|
113
140
|
出力される名前の候補となるデータは `lib/data/names.yml` にあるので、必要であればファイルを修正してください。
|
114
141
|
|
115
142
|
### 住所をランダムで返す
|
data/lib/gimei/name.rb
CHANGED
@@ -14,7 +14,7 @@ class Gimei::Name
|
|
14
14
|
new(:female)
|
15
15
|
end
|
16
16
|
|
17
|
-
%i[kanji hiragana katakana romaji first last].each do |method_name|
|
17
|
+
%i[kanji hiragana katakana romaji first last family given].each do |method_name|
|
18
18
|
define_method(method_name) do |gender = nil|
|
19
19
|
new(gender).public_send(method_name)
|
20
20
|
end
|
@@ -53,6 +53,9 @@ class Gimei::Name
|
|
53
53
|
|
54
54
|
alias_method :to_s, :kanji
|
55
55
|
|
56
|
+
alias_method :family, :last
|
57
|
+
alias_method :given, :first
|
58
|
+
|
56
59
|
class First
|
57
60
|
class << self
|
58
61
|
def male
|
data/lib/gimei/version.rb
CHANGED
data/lib/gimei.rb
CHANGED
@@ -11,7 +11,11 @@ class Gimei
|
|
11
11
|
|
12
12
|
GENDERS = [:male, :female].freeze
|
13
13
|
|
14
|
-
def_delegators :@name,
|
14
|
+
def_delegators :@name,
|
15
|
+
:first, :last, :gender,
|
16
|
+
:kanji, :hiragana, :katakana, :romaji,
|
17
|
+
:male?, :female?,
|
18
|
+
:family, :given
|
15
19
|
def_delegators :@address, :prefecture, :city, :town
|
16
20
|
alias_method :to_s, :kanji
|
17
21
|
|
@@ -35,7 +39,7 @@ class Gimei
|
|
35
39
|
@addresses ||= YAML.load_file(File.expand_path(File.join('..', 'data', 'addresses.yml'), __FILE__))
|
36
40
|
end
|
37
41
|
|
38
|
-
%i[kanji hiragana katakana romaji first last].each do |method_name|
|
42
|
+
%i[kanji hiragana katakana romaji first last family given].each do |method_name|
|
39
43
|
define_method(method_name) do |gender = nil|
|
40
44
|
name(gender).public_send(method_name)
|
41
45
|
end
|
@@ -54,6 +58,9 @@ class Gimei
|
|
54
58
|
@unique.define_unique_method(method_name)
|
55
59
|
end
|
56
60
|
|
61
|
+
@unique.define_unique_method(:family, :last)
|
62
|
+
@unique.define_unique_method(:given, :first)
|
63
|
+
|
57
64
|
%i[male female kanji].each do |method_name|
|
58
65
|
@unique.define_unique_method(method_name, :name)
|
59
66
|
end
|
data/spec/gimei_spec.rb
CHANGED
@@ -108,17 +108,41 @@ describe Gimei do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
describe '.last' do
|
111
|
-
it 'Gimei::Name::
|
111
|
+
it 'Gimei::Name::Last オブジェクトが返ること' do
|
112
112
|
_(Gimei.last).must_be_instance_of Gimei::Name::Last
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
116
|
describe '#last' do
|
117
|
-
it 'Gimei::Name::
|
117
|
+
it 'Gimei::Name::Last オブジェクトが返ること' do
|
118
118
|
_(Gimei.new.last).must_be_instance_of Gimei::Name::Last
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
|
+
describe '.family' do
|
123
|
+
it 'Gimei::Name::Last オブジェクトが返ること' do
|
124
|
+
_(Gimei.family).must_be_instance_of Gimei::Name::Last
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe '#family' do
|
129
|
+
it 'Gimei::Name::Last オブジェクトが返ること' do
|
130
|
+
_(Gimei.new.family).must_be_instance_of Gimei::Name::Last
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '.given' do
|
135
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
136
|
+
_(Gimei.given).must_be_instance_of Gimei::Name::First
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
describe '#given' do
|
141
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
142
|
+
_(Gimei.new.given).must_be_instance_of Gimei::Name::First
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
122
146
|
describe '.romaji' do
|
123
147
|
it 'ローマ字とスペースが返ること' do
|
124
148
|
_(Gimei.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
data/spec/name_spec.rb
CHANGED
@@ -58,6 +58,30 @@ describe Gimei::Name do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
describe '.first' do
|
62
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
63
|
+
_(Gimei::Name.first).must_be_instance_of Gimei::Name::First
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe '.last' do
|
68
|
+
it 'Gimei::Name::Last オブジェクトが返ること' do
|
69
|
+
_(Gimei::Name.last).must_be_instance_of Gimei::Name::Last
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '.family' do
|
74
|
+
it 'Gimei::Name::Last オブジェクトが返ること' do
|
75
|
+
_(Gimei::Name.family).must_be_instance_of Gimei::Name::Last
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '.given' do
|
80
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
81
|
+
_(Gimei::Name.given).must_be_instance_of Gimei::Name::First
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
61
85
|
describe '#gender' do
|
62
86
|
it ':male または :female が返ること' do
|
63
87
|
_(Gimei::Name.new.gender).must_be_instance_of(Symbol)
|
@@ -83,6 +107,12 @@ describe Gimei::Name do
|
|
83
107
|
end
|
84
108
|
end
|
85
109
|
|
110
|
+
describe '#romaji' do
|
111
|
+
it 'ローマ字とスペースが返ること' do
|
112
|
+
_(Gimei::Name.new.romaji).must_match(/\A[a-zA-Z\s]+\z/)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
86
116
|
describe '#first' do
|
87
117
|
it 'Gimei::Name::First オブジェクトが返ること' do
|
88
118
|
_(Gimei::Name.new.first).must_be_instance_of Gimei::Name::First
|
@@ -95,9 +125,15 @@ describe Gimei::Name do
|
|
95
125
|
end
|
96
126
|
end
|
97
127
|
|
98
|
-
describe '
|
99
|
-
it '
|
100
|
-
_(Gimei::Name.new.
|
128
|
+
describe '#family' do
|
129
|
+
it 'Gimei::Name::Last オブジェクトが返ること' do
|
130
|
+
_(Gimei::Name.new.family).must_be_instance_of Gimei::Name::Last
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '#given' do
|
135
|
+
it 'Gimei::Name::First オブジェクトが返ること' do
|
136
|
+
_(Gimei::Name.new.given).must_be_instance_of Gimei::Name::First
|
101
137
|
end
|
102
138
|
end
|
103
139
|
end
|
data/spec/unique_spec.rb
CHANGED
@@ -157,6 +157,60 @@ describe 'Gimei.unique' do
|
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
160
|
+
describe '#family' do
|
161
|
+
describe '姓が枯渇していないとき' do
|
162
|
+
it '一意な姓(漢字単位)が返ること' do
|
163
|
+
Gimei.stub(:names, {
|
164
|
+
'first_name' => { 'male' => [], 'female' => [] },
|
165
|
+
'last_name' => [%w[前島 まえしま マエシマ], %w[神谷 かみや カミヤ]]
|
166
|
+
}) do
|
167
|
+
_([Gimei.unique.family.kanji, Gimei.unique.family.kanji].sort).must_equal %w[前島 神谷]
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
describe '姓が枯渇したとき' do
|
173
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
174
|
+
Gimei.stub(:names, {
|
175
|
+
'first_name' => { 'male' => [], 'female' => [] },
|
176
|
+
'last_name' => [%w[前島 まえしま マエシマ]]
|
177
|
+
}) do
|
178
|
+
assert_raises Gimei::RetryLimitExceeded do
|
179
|
+
Gimei.unique.family
|
180
|
+
Gimei.unique.family
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe '#given' do
|
188
|
+
describe '名が枯渇していないとき' do
|
189
|
+
it '一意な名(漢字単位)が返ること' do
|
190
|
+
Gimei.stub(:names, {
|
191
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ], %w[真二 しんじ シンジ]] },
|
192
|
+
'last_name' => %w[]
|
193
|
+
}) do
|
194
|
+
_([Gimei.unique.given(:male).kanji, Gimei.unique.given(:male).kanji].sort).must_equal %w[真一 真二]
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
describe '名が枯渇したとき' do
|
200
|
+
it 'Gimei::RetryLimitExceeded例外が発生すること' do
|
201
|
+
Gimei.stub(:names, {
|
202
|
+
'first_name' => { 'male' => [%w[真一 しんいち シンイチ]] },
|
203
|
+
'last_name' => []
|
204
|
+
}) do
|
205
|
+
assert_raises Gimei::RetryLimitExceeded do
|
206
|
+
Gimei.unique.given(:male)
|
207
|
+
Gimei.unique.given(:male)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
160
214
|
describe '#kanji' do
|
161
215
|
describe '名前が枯渇していないとき' do
|
162
216
|
it '一意な名前(フルネームの漢字単位)が返ること' do
|
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: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- willnet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: romaji
|
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
117
|
requirements: []
|
118
|
-
rubygems_version: 3.
|
118
|
+
rubygems_version: 3.3.3
|
119
119
|
signing_key:
|
120
120
|
specification_version: 4
|
121
121
|
summary: random Japanese name and address generator. support kanji, hiragana, and
|