gimei 1.1.0 → 1.3.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: 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