gimei 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bab55c81d075ac091f92fe6dd07a17aec5e05778d30f130d947fedde41fb8736
4
- data.tar.gz: 05bef7aad6981ed3a968ff757aa2231de6a123f66fedbc50957728a606cb8363
3
+ metadata.gz: 5790029efdd49745df0cae0618b7be59b722ca1fd3041ec0d16458677f176f90
4
+ data.tar.gz: a6751528cd6333057e08b0bd39cda08cc59a91b768a4f0eff1707087b6c1c0ab
5
5
  SHA512:
6
- metadata.gz: d56e36b028af21d23fd52a4cc296c00bc0e5742a678be15cca002e70269f3778fd4a081a78059504d748705307ee6f145ad290d0408bc6ce5d78eddc52e7a664
7
- data.tar.gz: 1a922ee6c3ea7309382da24f41525da6a0f3b44bfbec45a6cce97757b61eac80ae5c8b2157f8aa4e853691f295c99aaf7db661d6c14b735745cc6ccdcf95fcb6
6
+ metadata.gz: 9228724dd0f8bb2695b6555a13d2f338ef331497dd93140d932a3033a4830544b7e5d2ba05525714d2fb70a764377b1e0b397cb60df5627dbffb13fcd4b15044
7
+ data.tar.gz: 819cfbcbdd87a6219595a109b1d16e41a7f21e45b4b939cbdda944752148c89d593ab3e2d8500c3459a8fd6bd935abaa56903b661692aa64a0626ca54cc19075
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
@@ -20,42 +20,35 @@ jobs:
20
20
  fail-fast: false
21
21
 
22
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
- - ruby:3.1
32
- - rubylang/ruby:master-nightly-bionic
23
+ ruby-version: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', 'head']
33
24
  include:
34
- - ruby: rubylang/ruby:master-nightly-bionic
35
- allow_failures: "true"
25
+ - ruby-version: 'head'
26
+ allow_failures: 'true'
36
27
 
37
28
  steps:
38
- - uses: actions/checkout@v2
39
-
40
- - name: Cache vendor/bundle
41
- uses: actions/cache@v1
42
- id: cache_gem
29
+ - uses: actions/checkout@v4
30
+ - name: Set up Ruby
31
+ uses: ruby/setup-ruby@v1
43
32
  with:
44
- path: vendor/bundle
45
- key: v1-gem-${{ runner.os }}-${{ matrix.ruby }}-${{ github.sha }}
46
- restore-keys: |
47
- v1-gem-${{ runner.os }}-${{ matrix.ruby }}-
48
- continue-on-error: ${{ matrix.allow_failures == 'true' }}
49
-
50
- - name: bundle update
51
- run: |
52
- set -xe
53
- bundle config path vendor/bundle
54
- bundle update --jobs $(nproc) --retry 3
55
- continue-on-error: ${{ matrix.allow_failures == 'true' }}
56
-
33
+ ruby-version: ${{ matrix.ruby-version }}
34
+ bundler-cache: true
57
35
  - name: Run test
58
36
  run: |
59
37
  set -xe
60
38
  bundle exec rake
61
39
  continue-on-error: ${{ matrix.allow_failures == 'true' }}
40
+
41
+ - name: Coveralls
42
+ uses: coverallsapp/github-action@v2
43
+
44
+ type-check:
45
+ runs-on: ubuntu-latest
46
+ steps:
47
+ - uses: actions/checkout@v4
48
+ - name: Set up Ruby
49
+ uses: ruby/setup-ruby@v1
50
+ with:
51
+ ruby-version: 3.3
52
+ bundler-cache: true
53
+ - name: Run type check
54
+ run: bundle exec steep check --with-expectations
data/CHANGELOG.md CHANGED
@@ -1,3 +1,5 @@
1
+ https://github.com/willnet/gimei/releases に移行しました
2
+
1
3
  ## 1.1.0
2
4
 
3
5
  - Gimei::Name#family, #given を追加 [@nard-tech](https://github.com/nard-tech) (https://github.com/willnet/gimei/pull/50)
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in gimei.gemspec
4
4
  gemspec
5
+ gem 'simplecov', require: false
6
+ gem 'steep', 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)
@@ -239,7 +238,6 @@ Gimei.address.kanji #=> "熊本県日進市東場内"
239
238
 
240
239
  ## Supported versions
241
240
 
242
- - 2.2.x
243
241
  - 2.3.x
244
242
  - 2.4.x
245
243
  - 2.5.x
@@ -247,6 +245,8 @@ Gimei.address.kanji #=> "熊本県日進市東場内"
247
245
  - 2.7.x
248
246
  - 3.0.x
249
247
  - 3.1.x
248
+ - 3.2.x
249
+ - 3.3.x
250
250
 
251
251
  ## 他言語による実装
252
252
 
@@ -255,7 +255,7 @@ Gimei.address.kanji #=> "熊本県日進市東場内"
255
255
  - Emacs Lisp [gongo/emacs-gimei](https://github.com/gongo/emacs-gimei)
256
256
  - Go [mattn/go-gimei](https://github.com/mattn/go-gimei)
257
257
  - Java [moznion/gimei-java](https://github.com/moznion/gimei-java)
258
- - Node.js [demiglacesource/node-gimei](https://github.com/demiglacesource/node-gimei)
258
+ - Node.js [sabakan404/node-gimei](https://github.com/sabakan404/node-gimei)
259
259
  - Perl [youpong/Data-Gimei](https://github.com/youpong/Data-Gimei)
260
260
  - Python [nabetama/gimei](https://github.com/nabetama/gimei)
261
261
  - TypeScript [abcb2/type-gimei](https://github.com/abcb2/type-gimei)
data/Steepfile ADDED
@@ -0,0 +1,13 @@
1
+ D = Steep::Diagnostic
2
+
3
+ target :lib do
4
+ signature "sig"
5
+
6
+ check "lib"
7
+
8
+ library "forwardable"
9
+ library "yaml"
10
+
11
+ configure_code_diagnostics(D::Ruby.strict)
12
+ end
13
+
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/address.rb CHANGED
@@ -43,7 +43,7 @@ class Gimei::Address
43
43
  end
44
44
 
45
45
  def initialize
46
- @prefectures = Gimei.addresses['addresses']['prefecture'].sample(random: Gimei.config.rng)
46
+ @prefectures = Gimei.addresses['addresses']['prefecture'].sample(random: Gimei.config.rng) #: [String, String, String]
47
47
  end
48
48
 
49
49
  alias_method :to_s, :kanji
@@ -67,7 +67,7 @@ class Gimei::Address
67
67
  end
68
68
 
69
69
  def initialize
70
- @cities = Gimei.addresses['addresses']['city'].sample(random: Gimei.config.rng)
70
+ @cities = Gimei.addresses['addresses']['city'].sample(random: Gimei.config.rng) #: [String, String, String]
71
71
  end
72
72
 
73
73
  alias_method :to_s, :kanji
@@ -91,7 +91,7 @@ class Gimei::Address
91
91
  end
92
92
 
93
93
  def initialize
94
- @towns = Gimei.addresses['addresses']['town'].sample(random: Gimei.config.rng)
94
+ @towns = Gimei.addresses['addresses']['town'].sample(random: Gimei.config.rng) #: [String, String, String]
95
95
  end
96
96
 
97
97
  alias_method :to_s, :kanji
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
@@ -15,14 +15,16 @@ class Gimei::Name
15
15
  end
16
16
 
17
17
  %i[kanji hiragana katakana romaji first last family given].each do |method_name|
18
- define_method(method_name) do |gender = nil|
19
- new(gender).public_send(method_name)
20
- end
18
+ class_eval(<<~METHOD, __FILE__, __LINE__ + 1)
19
+ def #{method_name}(gender = nil)
20
+ new(gender).#{method_name}
21
+ end
22
+ METHOD
21
23
  end
22
24
  end
23
25
 
24
26
  def initialize(gender = nil)
25
- @gender = gender || Gimei::GENDERS.sample(random: Gimei.config.rng)
27
+ @gender = gender || Gimei::GENDERS.sample(random: Gimei.config.rng) #: :male | :female
26
28
  @first = First.new @gender
27
29
  @last = Last.new
28
30
  end
@@ -71,7 +73,7 @@ class Gimei::Name
71
73
  def_delegators :@name, :kanji, :hiragana, :katakana, :to_s, :romaji
72
74
 
73
75
  def initialize(gender = nil)
74
- @gender = gender || Gimei::GENDERS.sample(random: Gimei.config.rng)
76
+ @gender = gender || Gimei::GENDERS.sample(random: Gimei.config.rng) #: :male | :female
75
77
  @name = NameWord.new(Gimei.names['first_name'][@gender.to_s].sample(random: Gimei.config.rng))
76
78
  end
77
79
 
@@ -89,7 +91,8 @@ class Gimei::Name
89
91
  def_delegators :@name, :kanji, :hiragana, :katakana, :to_s, :romaji
90
92
 
91
93
  def initialize
92
- @name = NameWord.new(Gimei.names['last_name'].sample(random: Gimei.config.rng))
94
+ name = Gimei.names['last_name'].sample(random: Gimei.config.rng) #: [String, String, String]
95
+ @name = NameWord.new(name)
93
96
  end
94
97
  end
95
98
 
data/lib/gimei/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Gimei
2
- VERSION = "1.1.0"
2
+ VERSION = "1.3.0"
3
3
  end
data/lib/gimei.rb CHANGED
@@ -9,7 +9,7 @@ require 'gimei/config'
9
9
  class Gimei
10
10
  extend Forwardable
11
11
 
12
- GENDERS = [:male, :female].freeze
12
+ GENDERS = [:male, :female].freeze #: [:male, :female]
13
13
 
14
14
  def_delegators :@name,
15
15
  :first, :last, :gender,
@@ -24,7 +24,7 @@ class Gimei
24
24
  class << self
25
25
  extend Forwardable
26
26
 
27
- def_delegators Gimei::Name, :male, :female
27
+ def_delegators 'Gimei::Name', :male, :female
28
28
  def_delegators :address, :prefecture, :city, :town
29
29
 
30
30
  def name(gender = nil)
@@ -40,9 +40,11 @@ class Gimei
40
40
  end
41
41
 
42
42
  %i[kanji hiragana katakana romaji first last family given].each do |method_name|
43
- define_method(method_name) do |gender = nil|
44
- name(gender).public_send(method_name)
45
- end
43
+ class_eval(<<~METHOD, __FILE__, __LINE__ + 1)
44
+ def #{method_name}(gender = nil)
45
+ new(gender).#{method_name}
46
+ end
47
+ METHOD
46
48
  end
47
49
 
48
50
  def address
@@ -0,0 +1,42 @@
1
+ class Gimei
2
+ class Address
3
+ attr_reader prefecture: Prefecture
4
+ attr_reader city: City
5
+ attr_reader town: Town
6
+ def initialize: -> void
7
+ def kanji: -> String
8
+ def hiragana: -> String
9
+ def katakana: -> String
10
+ def romaji: -> String
11
+
12
+ class Prefecture
13
+ @prefectures: [String, String, String]
14
+
15
+ def kanji: -> String
16
+ def hiragana: -> String
17
+ def katakana: -> String
18
+ def romaji: -> String
19
+ def initialize: -> void
20
+ end
21
+
22
+ class City
23
+ @cities: [String, String, String]
24
+
25
+ def kanji: -> String
26
+ def hiragana: -> String
27
+ def katakana: -> String
28
+ def romaji: -> String
29
+ def initialize: -> void
30
+ end
31
+
32
+ class Town
33
+ @towns: [String, String, String]
34
+
35
+ def kanji: -> String
36
+ def hiragana: -> String
37
+ def katakana: -> String
38
+ def romaji: -> String
39
+ def initialize: -> void
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,6 @@
1
+ class Gimei
2
+ class Config
3
+ attr_accessor rng: singleton(Random)
4
+ def initialize: (?rng: singleton(Random)) -> void
5
+ end
6
+ end
@@ -0,0 +1,58 @@
1
+ class Gimei
2
+ class Name
3
+ attr_reader first: First
4
+ attr_reader last: Last
5
+ attr_reader gender: gender_type
6
+ def self.male: -> Name
7
+ def self.female: -> Name
8
+ def initialize: (?(gender_type)? gender) -> void
9
+ def kanji: -> String
10
+ def hiragana: -> String
11
+ def katakana: -> String
12
+ def romaji: -> String
13
+ def male?: -> bool
14
+ def female?: -> bool
15
+ alias family last
16
+ alias given first
17
+
18
+ class First
19
+ extend Forwardable
20
+ @gender: gender_type
21
+ @name: NameWord
22
+
23
+ def self.male: -> First
24
+ def self.female: -> First
25
+ def initialize: (?(gender_type)? gender) -> void
26
+ def kanji: -> String
27
+ def hiragana: -> String
28
+ def katakana: -> String
29
+ def to_s: -> String
30
+ def romaji: -> String
31
+ def male?: -> bool
32
+ def female?: -> bool
33
+ end
34
+
35
+ class Last
36
+ extend Forwardable
37
+ @gender: gender_type
38
+ @name: NameWord
39
+
40
+ def initialize: -> void
41
+ def kanji: -> String
42
+ def hiragana: -> String
43
+ def katakana: -> String
44
+ def to_s: -> String
45
+ def romaji: -> String
46
+ end
47
+
48
+ class NameWord
49
+ @name: [String, String, String]
50
+
51
+ def initialize: ([String, String, String] name) -> void
52
+ def kanji: -> String
53
+ def hiragana: -> String
54
+ def katakana: -> String
55
+ def romaji: -> String
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,4 @@
1
+ module Romaji
2
+ def self.romaji2kana: (String, Hash[Symbol, Symbol]?) -> String
3
+ def self.kana2romaji: (String) -> String
4
+ end
@@ -0,0 +1,23 @@
1
+ class Gimei
2
+ class RetryLimitExceeded < StandardError
3
+ end
4
+
5
+ class UniqueGenerator
6
+ self.@previous_results: Hash[Symbol, Set[String]]
7
+
8
+ def self.previous_results: -> Hash[Symbol, Set[String]]
9
+ def initialize: (Class klass, Integer max_retries) -> void
10
+ def previous_results: -> Hash[Symbol, Set[String]]
11
+ def clear: (?Symbol? key) -> void
12
+ def define_unique_method: (Symbol method_name, ?Symbol previous_result_key) -> Symbol
13
+ def name: -> Name
14
+ def first: -> Name::First
15
+ def last: -> Name::Last
16
+ alias family last
17
+ alias given first
18
+
19
+ private
20
+ attr_reader klass: Class
21
+ attr_reader max_retries: Integer
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ class Gimei
2
+ VERSION: String
3
+ end
data/sig/gimei.rbs ADDED
@@ -0,0 +1,30 @@
1
+ class Gimei
2
+ type gender_type = :female | :male
3
+
4
+ GENDERS: [:male, :female]
5
+ extend Forwardable
6
+ self.@names: untyped # (Hash['first_name', Hash[('male' | 'female'), Array[[String, String, String]]]] | Hash['last_name', Array[[String, String, String]]])
7
+ self.@addresses: Hash['addresses', Hash[('prefecture' | 'city' | 'town'), [String, String, String]]]
8
+ self.@unique: UniqueGenerator
9
+ self.@config: Config
10
+
11
+ attr_reader name: Name
12
+ attr_reader address: Address
13
+ def self.male: -> Name
14
+ def self.female: -> Name
15
+ def self.name: (?gender_type? gender) -> Name
16
+ def self.names: -> untyped # (Hash['first_name', Hash[('male' | 'female'), Array[[String, String, String]]]] | Hash['last_name', Array[[String, String, String]]])
17
+ def self.addresses: -> Hash['addresses', Hash[('prefecture' | 'city' | 'town'), Array[[String, String, String]]]]
18
+ def self.kanji: -> String
19
+ def self.hiragana: -> String
20
+ def self.katakana: -> String
21
+ def self.romaji: -> String
22
+ def self.first: -> Name::First
23
+ def self.last: -> Name::Last
24
+ def self.address: -> Address
25
+ def self.unique: (?Integer max_retries) -> UniqueGenerator
26
+ def self.config: -> Config
27
+ def initialize: (?gender_type? gender) -> void
28
+ alias self.family self.last
29
+ alias self.given self.first
30
+ 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
 
@@ -0,0 +1,23 @@
1
+ ---
2
+ - file: lib/gimei.rb
3
+ diagnostics:
4
+ - range:
5
+ start:
6
+ line: 27
7
+ character: 4
8
+ end:
9
+ line: 27
10
+ character: 18
11
+ severity: ERROR
12
+ message: Type `singleton(::Class)` does not have method `def_delegators`
13
+ code: Ruby::NoMethod
14
+ - range:
15
+ start:
16
+ line: 28
17
+ character: 4
18
+ end:
19
+ line: 28
20
+ character: 18
21
+ severity: ERROR
22
+ message: Type `singleton(::Class)` does not have method `def_delegators`
23
+ code: Ruby::NoMethod
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.1.0
4
+ version: 1.3.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-06-14 00:00:00.000000000 Z
11
+ date: 2024-01-20 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
@@ -81,6 +67,7 @@ files:
81
67
  - LICENSE.txt
82
68
  - README.md
83
69
  - Rakefile
70
+ - Steepfile
84
71
  - _config.yml
85
72
  - gimei.gemspec
86
73
  - lib/data/addresses.yml
@@ -91,11 +78,19 @@ files:
91
78
  - lib/gimei/name.rb
92
79
  - lib/gimei/unique_generator.rb
93
80
  - lib/gimei/version.rb
81
+ - sig/gimei.rbs
82
+ - sig/gimei/address.rbs
83
+ - sig/gimei/config.rbs
84
+ - sig/gimei/name.rbs
85
+ - sig/gimei/romaji.rbs
86
+ - sig/gimei/unique_generator.rbs
87
+ - sig/gimei/version.rbs
94
88
  - spec/address_spec.rb
95
89
  - spec/gimei_spec.rb
96
90
  - spec/name_spec.rb
97
91
  - spec/spec_helper.rb
98
92
  - spec/unique_spec.rb
93
+ - steep_expectations.yml
99
94
  homepage: https://github.com/willnet/gimei
100
95
  licenses:
101
96
  - MIT
@@ -115,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
110
  - !ruby/object:Gem::Version
116
111
  version: '0'
117
112
  requirements: []
118
- rubygems_version: 3.3.3
113
+ rubygems_version: 3.4.22
119
114
  signing_key:
120
115
  specification_version: 4
121
116
  summary: random Japanese name and address generator. support kanji, hiragana, and
data/.coveralls.yml DELETED
@@ -1 +0,0 @@
1
- service_name: travis-ci