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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b901f4ad99a870c4fccfe3c2b45d091efb1419db562b59b8a21ee28b789110d
4
- data.tar.gz: 37857e0546c84936dab79d8731c0cf2dd5462819138a8bc038107632c11b76dc
3
+ metadata.gz: 216d95783e46b3cdc2064cd313f95b132c27bac29226303edc8b803fde526331
4
+ data.tar.gz: 3d2e0e555591948b532d86d53bd7256bc963e33b5eb3e8b9cd4acaa7ba67deb2
5
5
  SHA512:
6
- metadata.gz: bf30c05cf967c15a0eba2713428baa490e0ffe2b0034286db8079f9a39a669685e74a6449b7d65bfe9c52418abfa6dfe85f242d3e69ec5c784b9ce47e6a198b4
7
- data.tar.gz: fdbace6cac90a3cbab0d93edb084fbff7babfa729efcb2b2e31da9eba3663b0d611d79abdc3861c98b3200c620a95ba50e91ed5e5ab9e8d4927173f3df601722
6
+ metadata.gz: 9e38714869d50eb7103cec576217cf034f56a353546e6424d8d7e8a0b7db9364d55cd0da3e6ec35c3ea6cc4b77be88773522706c46064232918468597916b646
7
+ data.tar.gz: 41035cbcb85d036bc177a7b01a494cab298d82c579402c0e560c474cef28d972860aafd1b84bc7e0562471db54810f554f541a1f25fe6e8e13b376b7c9ffad19
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
@@ -29,16 +29,17 @@ jobs:
29
29
  - ruby:2.7
30
30
  - ruby:3.0
31
31
  - ruby:3.1
32
- - rubylang/ruby:master-nightly-bionic
32
+ - ruby:3.2
33
+ - rubylang/ruby:master-jammy
33
34
  include:
34
- - ruby: rubylang/ruby:master-nightly-bionic
35
+ - ruby: rubylang/ruby:master-jammy
35
36
  allow_failures: "true"
36
37
 
37
38
  steps:
38
- - uses: actions/checkout@v2
39
+ - uses: actions/checkout@v3
39
40
 
40
41
  - name: Cache vendor/bundle
41
- uses: actions/cache@v1
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
@@ -2,3 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in gimei.gemspec
4
4
  gemspec
5
+ gem 'simplecov', require: false
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
@@ -20,5 +20,4 @@ Gem::Specification.new do |gem|
20
20
  gem.add_dependency('romaji')
21
21
  gem.add_development_dependency('rake')
22
22
  gem.add_development_dependency('minitest')
23
- gem.add_development_dependency('coveralls')
24
23
  end
data/lib/gimei/config.rb CHANGED
@@ -2,7 +2,7 @@ class Gimei
2
2
  class Config
3
3
  attr_accessor :rng
4
4
 
5
- def initialize(rng: Random.new)
5
+ def initialize(rng: Random)
6
6
  @rng = rng
7
7
  end
8
8
  end
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
@@ -1,3 +1,3 @@
1
1
  class Gimei
2
- VERSION = "1.0.1"
2
+ VERSION = "1.2.0"
3
3
  end
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, :gender, :kanji, :hiragana, :katakana, :first, :last, :male?, :female?, :romaji
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::First オブジェクトが返ること' do
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::First オブジェクトが返ること' do
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 '.romaji' do
99
- it 'ローマ字とスペースが返ること' do
100
- _(Gimei::Name.new.romaji).must_match(/\A[a-zA-Z\s]+\z/)
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
- require 'coveralls'
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.1
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: 2022-01-07 00:00:00.000000000 Z
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
- - ".coveralls.yml"
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.2.33
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