gimei 1.0.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +6 -0
- data/.github/workflows/test.yml +8 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile +1 -0
- data/README.md +28 -1
- data/gimei.gemspec +0 -1
- data/lib/gimei/config.rb +1 -1
- 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/spec_helper.rb +2 -4
- data/spec/unique_spec.rb +54 -0
- metadata +4 -18
- data/.coveralls.yml +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 216d95783e46b3cdc2064cd313f95b132c27bac29226303edc8b803fde526331
|
4
|
+
data.tar.gz: 3d2e0e555591948b532d86d53bd7256bc963e33b5eb3e8b9cd4acaa7ba67deb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e38714869d50eb7103cec576217cf034f56a353546e6424d8d7e8a0b7db9364d55cd0da3e6ec35c3ea6cc4b77be88773522706c46064232918468597916b646
|
7
|
+
data.tar.gz: 41035cbcb85d036bc177a7b01a494cab298d82c579402c0e560c474cef28d972860aafd1b84bc7e0562471db54810f554f541a1f25fe6e8e13b376b7c9ffad19
|
data/.github/workflows/test.yml
CHANGED
@@ -29,16 +29,17 @@ jobs:
|
|
29
29
|
- ruby:2.7
|
30
30
|
- ruby:3.0
|
31
31
|
- ruby:3.1
|
32
|
-
-
|
32
|
+
- ruby:3.2
|
33
|
+
- rubylang/ruby:master-jammy
|
33
34
|
include:
|
34
|
-
- ruby: rubylang/ruby:master-
|
35
|
+
- ruby: rubylang/ruby:master-jammy
|
35
36
|
allow_failures: "true"
|
36
37
|
|
37
38
|
steps:
|
38
|
-
- uses: actions/checkout@
|
39
|
+
- uses: actions/checkout@v3
|
39
40
|
|
40
41
|
- name: Cache vendor/bundle
|
41
|
-
uses: actions/cache@
|
42
|
+
uses: actions/cache@v3
|
42
43
|
id: cache_gem
|
43
44
|
with:
|
44
45
|
path: vendor/bundle
|
@@ -59,3 +60,6 @@ jobs:
|
|
59
60
|
set -xe
|
60
61
|
bundle exec rake
|
61
62
|
continue-on-error: ${{ matrix.allow_failures == 'true' }}
|
63
|
+
|
64
|
+
- name: Coveralls
|
65
|
+
uses: coverallsapp/github-action@v2
|
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/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# Gimei
|
2
2
|
|
3
|
-
[![Travis](https://img.shields.io/travis/willnet/gimei.svg)](https://travis-ci.org/willnet/gimei)
|
4
3
|
[![Coveralls](https://coveralls.io/repos/willnet/gimei/badge.svg)](https://coveralls.io/r/willnet/gimei)
|
5
4
|
[![Code Climate](https://codeclimate.com/github/willnet/gimei/badges/gpa.svg)](https://codeclimate.com/github/willnet/gimei)
|
6
5
|
[![Gem](https://img.shields.io/gem/v/gimei.svg)](https://rubygems.org/gems/gimei)
|
@@ -33,6 +32,20 @@ gimei.first.katakana #=> "ハルナ"
|
|
33
32
|
gimei.first.romaji #=> "Haruna"
|
34
33
|
```
|
35
34
|
|
35
|
+
`gimei.last`, `gimei.first` の代わりに、`gimei.family`, `gimei.given` を用いることもできます。
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
gimei.family.kanji #=> "斎藤"
|
39
|
+
gimei.family.hiragana #=> "さいとう"
|
40
|
+
gimei.family.katakana #=> "サイトウ"
|
41
|
+
gimei.family.romaji #=> "Saitou"
|
42
|
+
|
43
|
+
gimei.given.kanji #=> "陽菜"
|
44
|
+
gimei.given.hiragana #=> "はるな"
|
45
|
+
gimei.given.katakana #=> "ハルナ"
|
46
|
+
gimei.given.romaji #=> "Haruna"
|
47
|
+
```
|
48
|
+
|
36
49
|
下記のように男性/女性の名前を返すことを明示的に指定できます。`Gimei.name` の場合は男女の名前を等確率で返します。
|
37
50
|
|
38
51
|
```ruby
|
@@ -64,6 +77,16 @@ Gimei.first.kanji #=> "結菜"
|
|
64
77
|
Gimei.first.hiragana #=> "ここあ"
|
65
78
|
Gimei.first.katakana #=> "ヤマト"
|
66
79
|
Gimei.first.romaji #=> "Noriyuki"
|
80
|
+
|
81
|
+
Gimei.family.kanji #=> "黒沢"
|
82
|
+
Gimei.family.hiragana #=> "いずみ"
|
83
|
+
Gimei.family.katakana #=> "エノモト"
|
84
|
+
Gimei.family.romaji #=> "Okada"
|
85
|
+
|
86
|
+
Gimei.given.kanji #=> "航"
|
87
|
+
Gimei.given.hiragana #=> "まさみつ"
|
88
|
+
Gimei.given.katakana #=> "ユカ"
|
89
|
+
Gimei.given.romaji #=> "Haruto"
|
67
90
|
```
|
68
91
|
|
69
92
|
同じ名前を二度取得したくない場合には、以下のように`unique`を挟みます。次のようにすると、利用した名前をGimei内で保持することで必ず一意な名前を返すようにできます。
|
@@ -110,6 +133,9 @@ Gimei.unique.clear(:first) # Gimei.unique.first の結果を消去
|
|
110
133
|
- `Gimei.unique.female`
|
111
134
|
- `Gimei.unique.kanji`
|
112
135
|
|
136
|
+
`Gimei.unique.family` で生成された名前は `Gimei.unique.clear(:last)` で消去します。
|
137
|
+
また、`Gimei.unique.given` で生成された名前は `Gimei.unique.clear(:first)` で消去します。
|
138
|
+
|
113
139
|
出力される名前の候補となるデータは `lib/data/names.yml` にあるので、必要であればファイルを修正してください。
|
114
140
|
|
115
141
|
### 住所をランダムで返す
|
@@ -220,6 +246,7 @@ Gimei.address.kanji #=> "熊本県日進市東場内"
|
|
220
246
|
- 2.7.x
|
221
247
|
- 3.0.x
|
222
248
|
- 3.1.x
|
249
|
+
- 3.2.x
|
223
250
|
|
224
251
|
## 他言語による実装
|
225
252
|
|
data/gimei.gemspec
CHANGED
data/lib/gimei/config.rb
CHANGED
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/spec_helper.rb
CHANGED
@@ -2,10 +2,8 @@ lib = File.expand_path('../../lib', __FILE__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
|
4
4
|
require 'bundler/setup'
|
5
|
-
|
6
|
-
|
7
|
-
Coveralls.wear!
|
8
|
-
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.start
|
9
7
|
require 'gimei'
|
10
8
|
require 'minitest/autorun'
|
11
9
|
|
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.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- willnet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: romaji
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: coveralls
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
description: random Japanese name and address generator
|
70
56
|
email:
|
71
57
|
- netwillnet@gmail.com
|
@@ -73,7 +59,7 @@ executables: []
|
|
73
59
|
extensions: []
|
74
60
|
extra_rdoc_files: []
|
75
61
|
files:
|
76
|
-
- ".
|
62
|
+
- ".github/dependabot.yml"
|
77
63
|
- ".github/workflows/test.yml"
|
78
64
|
- ".gitignore"
|
79
65
|
- CHANGELOG.md
|
@@ -115,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
101
|
- !ruby/object:Gem::Version
|
116
102
|
version: '0'
|
117
103
|
requirements: []
|
118
|
-
rubygems_version: 3.
|
104
|
+
rubygems_version: 3.4.12
|
119
105
|
signing_key:
|
120
106
|
specification_version: 4
|
121
107
|
summary: random Japanese name and address generator. support kanji, hiragana, and
|
data/.coveralls.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
service_name: travis-ci
|