etoji 0.1.0 → 0.2.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: f9221749c7d4b81d689b5374d482a46f50b9c0b362b8e33864871bcadfc9ecf9
4
- data.tar.gz: f8eeb9b427ec6a1be88811019ec245bf680579a2549e1fe3236928580596f7f6
3
+ metadata.gz: afd0c2d37f817f5949e3a7741963b706ab949db07a7fb73f2e36526d8942dd04
4
+ data.tar.gz: ac4ebdb09514199ede54c8be287d27a837f6531ba01e6980e73ed4cebeceef22
5
5
  SHA512:
6
- metadata.gz: 4034b814a166c7ec57eb1414d9e01b2f861b1003ca5ca817a6dbb42b29e312115ac2fcf6c3b8a512e74ad625e720e78f86070e4df63c08b2b6cbfda9c38c183b
7
- data.tar.gz: fa6f6777389c7e2a4dd9b837041ffb13527eaf7d43e4fac9663a8234f00881101f029f8109240e6264e922ca7e05b307cc184da325d27827d6df982a84a2ed56
6
+ metadata.gz: d3d7bd8f402ce06b70782dad76f0f29d6260b35eab0d03609ac9be96a73365229eb91fbff3facfa3fd2766f098db67408c7c019be7463cdbc37c5fa095a71102
7
+ data.tar.gz: 7f63e67f25db88352b044f13f462f0895dd2b7cdc040db6f2e0f717320a975f367c26da7155f170baf43f3ecf5b0f5db01fd10baa44deb0f0f915be456396449
@@ -0,0 +1,28 @@
1
+ name: typecheck
2
+
3
+ on:
4
+ pull_request:
5
+ types:
6
+ - opened
7
+ - synchronize
8
+ - reopened
9
+ push:
10
+ branches:
11
+ - main
12
+
13
+ jobs:
14
+ build:
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ matrix:
18
+ ruby:
19
+ - '3.2.0'
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby }}
26
+ bundler-cache: true
27
+ - name: Run steep check
28
+ run: bundle exec steep check
data/Gemfile CHANGED
@@ -5,6 +5,7 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in etoji.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
9
-
10
- gem "rspec", "~> 3.0"
8
+ gem "rake"
9
+ gem "rspec"
10
+ gem "rbs", require: false
11
+ gem "steep", require: false
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Etoji
2
2
 
3
- [![test](https://github.com/MITSUBOSHI/etoji/actions/workflows/test.yml/badge.svg)](https://github.com/MITSUBOSHI/etoji/actions/workflows/test.yml)
3
+ [![test](https://github.com/MITSUBOSHI/etoji/actions/workflows/test.yml/badge.svg)](https://github.com/MITSUBOSHI/etoji/actions/workflows/test.yml)[![typecheck](https://github.com/MITSUBOSHI/etoji/actions/workflows/typecheck.yml/badge.svg)](https://github.com/MITSUBOSHI/etoji/actions/workflows/typecheck.yml)
4
4
 
5
5
 
6
6
  Simple 干支(eto) library
@@ -15,7 +15,8 @@ Etoji.geto(year: 2023)
15
15
  # number=4,
16
16
  # emoji="🐰",
17
17
  # character="卯",
18
- # character_hiragana="う",
18
+ # character_hiragana_kun="う",
19
+ # character_hiragana_on="ぼう",
19
20
  # animal_name_ja="兎",
20
21
  # animal_name_ja_hiragana="うさぎ",
21
22
  # animal_name_en="rabbit">
data/Steepfile ADDED
@@ -0,0 +1,21 @@
1
+ D = Steep::Diagnostic
2
+
3
+ target :lib do
4
+ signature "sig"
5
+
6
+ check "lib"
7
+
8
+ library(
9
+ "json"
10
+ )
11
+
12
+ # NOTE: Unexpected error occured like below.
13
+ # lib/etoji.rb:16:4: [error] Syntax `case_match` is not supported in Steep
14
+ # │ Diagnostic ID: Ruby::UnsupportedSyntax
15
+ # │
16
+ # └ case [with_prev, with_next]
17
+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~
18
+ configure_code_diagnostics do |hash|
19
+ hash[D::Ruby::UnsupportedSyntax] = :information
20
+ end
21
+ end
data/db/jyunishi.json CHANGED
@@ -3,7 +3,8 @@
3
3
  "number": 1,
4
4
  "emoji": "🐭",
5
5
  "character": "子",
6
- "character_hiragana": "ね",
6
+ "character_hiragana_kun": "ね",
7
+ "character_hiragana_on": "し",
7
8
  "animal_name": {
8
9
  "ja": "鼠",
9
10
  "ja_hiragana": "ねずみ",
@@ -14,7 +15,8 @@
14
15
  "number": 2,
15
16
  "emoji": "🐮",
16
17
  "character": "丑",
17
- "character_hiragana": "うし",
18
+ "character_hiragana_kun": "うし",
19
+ "character_hiragana_on": "ちゅう",
18
20
  "animal_name": {
19
21
  "ja": "牛",
20
22
  "ja_hiragana": "うし",
@@ -25,7 +27,8 @@
25
27
  "number": 3,
26
28
  "emoji": "🐯",
27
29
  "character": "寅",
28
- "character_hiragana": "とら",
30
+ "character_hiragana_kun": "とら",
31
+ "character_hiragana_on": "いん",
29
32
  "animal_name": {
30
33
  "ja": "虎",
31
34
  "ja_hiragana": "とら",
@@ -36,7 +39,8 @@
36
39
  "number": 4,
37
40
  "emoji": "🐰",
38
41
  "character": "卯",
39
- "character_hiragana": "う",
42
+ "character_hiragana_kun": "う",
43
+ "character_hiragana_on": "ぼう",
40
44
  "animal_name": {
41
45
  "ja": "兎",
42
46
  "ja_hiragana": "うさぎ",
@@ -47,7 +51,8 @@
47
51
  "number": 5,
48
52
  "emoji": "🐲",
49
53
  "character": "辰",
50
- "character_hiragana": "たつ",
54
+ "character_hiragana_kun": "たつ",
55
+ "character_hiragana_on": "しん",
51
56
  "animal_name": {
52
57
  "ja": "龍",
53
58
  "ja_hiragana": "りゅう",
@@ -58,7 +63,8 @@
58
63
  "number": 6,
59
64
  "emoji": "🐍",
60
65
  "character": "巳",
61
- "character_hiragana": "たつ",
66
+ "character_hiragana_kun": "",
67
+ "character_hiragana_on": "し",
62
68
  "animal_name": {
63
69
  "ja": "蛇",
64
70
  "ja_hiragana": "へび",
@@ -69,7 +75,8 @@
69
75
  "number": 7,
70
76
  "emoji": "🐴",
71
77
  "character": "午",
72
- "character_hiragana": "うま",
78
+ "character_hiragana_kun": "うま",
79
+ "character_hiragana_on": "ご",
73
80
  "animal_name": {
74
81
  "ja": "馬",
75
82
  "ja_hiragana": "うま",
@@ -80,7 +87,8 @@
80
87
  "number": 8,
81
88
  "emoji": "🐏",
82
89
  "character": "未",
83
- "character_hiragana": "ひつじ",
90
+ "character_hiragana_kun": "ひつじ",
91
+ "character_hiragana_on": "び",
84
92
  "animal_name": {
85
93
  "ja": "羊",
86
94
  "ja_hiragana": "ひつじ",
@@ -91,7 +99,8 @@
91
99
  "number": 9,
92
100
  "emoji": "🐵",
93
101
  "character": "申",
94
- "character_hiragana": "さる",
102
+ "character_hiragana_kun": "さる",
103
+ "character_hiragana_on": "しん",
95
104
  "animal_name": {
96
105
  "ja": "猿",
97
106
  "ja_hiragana": "さる",
@@ -102,7 +111,8 @@
102
111
  "number": 10,
103
112
  "emoji": "🐔",
104
113
  "character": "酉",
105
- "character_hiragana": "とり",
114
+ "character_hiragana_kun": "とり",
115
+ "character_hiragana_on": "ゆう",
106
116
  "animal_name": {
107
117
  "ja": "鶏",
108
118
  "ja_hiragana": "にわとり",
@@ -113,7 +123,8 @@
113
123
  "number": 11,
114
124
  "emoji": "🐶",
115
125
  "character": "戌",
116
- "character_hiragana": "いぬ",
126
+ "character_hiragana_kun": "いぬ",
127
+ "character_hiragana_on": "じゅつ",
117
128
  "animal_name": {
118
129
  "ja": "犬",
119
130
  "ja_hiragana": "いぬ",
@@ -124,7 +135,8 @@
124
135
  "number": 12,
125
136
  "emoji": "🐗",
126
137
  "character": "亥",
127
- "character_hiragana": "い",
138
+ "character_hiragana_kun": "い",
139
+ "character_hiragana_on": "がい",
128
140
  "animal_name": {
129
141
  "ja": "猪",
130
142
  "ja_hiragana": "いのしし",
data/etoji.gemspec CHANGED
@@ -26,9 +26,5 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
28
 
29
- # Uncomment to register a new dependency of your gem
30
- # spec.add_dependency "example-gem", "~> 1.0"
31
-
32
- # For more information and examples about making a new gem, checkout our
33
- # guide at: https://bundler.io/guides/creating_gem.html
29
+ spec.add_dependency 'json'
34
30
  end
data/lib/etoji/jikkan.rb CHANGED
@@ -4,9 +4,9 @@ require 'json'
4
4
  module Etoji
5
5
  module Jikkan
6
6
  class NotFound < StandardError; end
7
+ class Kan < ::Data.define(:number, :character, :character_hiragana_on, :character_hiragana_kun); end
7
8
 
8
9
  SOURCE_FILE_PATH = File.expand_path('../../../db/jikkan.json', __FILE__)
9
- Kan = ::Data.define(:number, :character, :character_hiragana_on, :character_hiragana_kun)
10
10
  MEMBERS = JSON.parse(File.read(SOURCE_FILE_PATH), symbolize_names: true).map { |attributes|
11
11
  Kan.new(
12
12
  number: attributes[:number],
@@ -4,15 +4,16 @@ require 'json'
4
4
  module Etoji
5
5
  module Jyunishi
6
6
  class NotFound < StandardError; end
7
+ class Animal < ::Data.define(:number, :emoji, :character, :character_hiragana_kun, :character_hiragana_on, :animal_name_ja, :animal_name_ja_hiragana, :animal_name_en); end
7
8
 
8
9
  SOURCE_FILE_PATH = File.expand_path('../../../db/jyunishi.json', __FILE__)
9
- Animal = ::Data.define(:number, :emoji, :character, :character_hiragana, :animal_name_ja, :animal_name_ja_hiragana, :animal_name_en)
10
10
  MEMBERS = JSON.parse(File.read(SOURCE_FILE_PATH), symbolize_names: true).map { |attributes|
11
11
  Animal.new(
12
12
  number: attributes[:number],
13
13
  emoji: attributes[:emoji],
14
14
  character: attributes[:character],
15
- character_hiragana: attributes[:character_hiragana],
15
+ character_hiragana_kun: attributes[:character_hiragana_kun],
16
+ character_hiragana_on: attributes[:character_hiragana_on],
16
17
  animal_name_ja: attributes.dig(:animal_name, :ja),
17
18
  animal_name_ja_hiragana: attributes.dig(:animal_name, :ja_hiragana),
18
19
  animal_name_en: attributes.dig(:animal_name, :en)
data/lib/etoji/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Etoji
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/etoji.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "etoji/version"
4
- require "etoji/jikkan"
5
- require "etoji/jyunishi"
3
+ require_relative "etoji/version"
4
+ require_relative "etoji/jikkan"
5
+ require_relative "etoji/jyunishi"
6
6
 
7
7
  module Etoji
8
8
  class Error < StandardError; end
@@ -0,0 +1,22 @@
1
+ module Etoji
2
+ module Jikkan
3
+ SOURCE_FILE_PATH: String
4
+ MEMBERS: Array[Kan]
5
+ self.@kans_by_number: Hash[Integer, Kan]
6
+
7
+ def self.all: -> Array[Kan]
8
+ def self.find_by_number: (Integer) -> Kan
9
+
10
+ class Kan
11
+ attr_reader number: Integer
12
+ attr_reader character: String
13
+ attr_reader character_hiragana_on: String
14
+ attr_reader character_hiragana_kun: String
15
+
16
+ def initialize: (number: Integer, character: String, character_hiragana_on: String, character_hiragana_kun: String) -> void
17
+ end
18
+
19
+ class NotFound < StandardError
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,26 @@
1
+ module Etoji
2
+ module Jyunishi
3
+ SOURCE_FILE_PATH: String
4
+ MEMBERS: Array[Animal]
5
+ self.@animals_by_number: Hash[Integer, Animal]
6
+
7
+ def self.all: -> Array[Animal]
8
+ def self.find_by_number: (Integer) -> Animal
9
+
10
+ class Animal
11
+ attr_reader number: Integer
12
+ attr_reader emoji: String
13
+ attr_reader character: String
14
+ attr_reader character_hiragana_on: String
15
+ attr_reader character_hiragana_kun: String
16
+ attr_reader animal_name_ja: String
17
+ attr_reader animal_name_ja_hiragana: String
18
+ attr_reader animal_name_en: String
19
+
20
+ def initialize: (number: Integer, emoji: String, character: String, character_hiragana_on: String, character_hiragana_kun: String, animal_name_ja: String, animal_name_ja_hiragana: String, animal_name_en: String) -> void
21
+ end
22
+
23
+ class NotFound < StandardError
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,3 @@
1
+ module Etoji
2
+ VERSION: String
3
+ end
data/sig/lib/etoji.rbs ADDED
@@ -0,0 +1,11 @@
1
+ module Etoji
2
+ class Error < StandardError
3
+ end
4
+
5
+ def self.geto: (year: Integer|String, ?with_prev: false, ?with_next: false) -> Jyunishi::Animal
6
+ | (year: Integer|String, with_prev: true, ?with_next: bool) -> Array[Jyunishi::Animal]
7
+ | (year: Integer|String, ?with_prev: bool, with_next: true) -> Array[Jyunishi::Animal]
8
+ def self.geto_full_string: (year: Integer|String) -> String
9
+
10
+ def self.convert_year: (Integer|String) -> Integer
11
+ end
@@ -0,0 +1,3 @@
1
+ class Data
2
+ def self.define: (*untyped) -> untyped
3
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etoji
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mitsubosh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-04 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2023-01-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: Simple 干支(eto) library
14
28
  email:
15
29
  - yuya.mitsuboshi@gmail.com
@@ -18,12 +32,14 @@ extensions: []
18
32
  extra_rdoc_files: []
19
33
  files:
20
34
  - ".github/workflows/test.yml"
35
+ - ".github/workflows/typecheck.yml"
21
36
  - ".gitignore"
22
37
  - ".rspec"
23
38
  - Gemfile
24
39
  - LICENSE.txt
25
40
  - README.md
26
41
  - Rakefile
42
+ - Steepfile
27
43
  - bin/console
28
44
  - bin/setup
29
45
  - db/jikkan.json
@@ -34,6 +50,11 @@ files:
34
50
  - lib/etoji/jikkan.rb
35
51
  - lib/etoji/jyunishi.rb
36
52
  - lib/etoji/version.rb
53
+ - sig/lib/etoji.rbs
54
+ - sig/lib/etoji/jikkan.rbs
55
+ - sig/lib/etoji/jyunishi.rbs
56
+ - sig/lib/etoji/version.rbs
57
+ - sig/patch/data.rbs
37
58
  homepage: https://github.com/MITSUBOSHI/etoji
38
59
  licenses:
39
60
  - MIT