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 +4 -4
- data/.github/workflows/typecheck.yml +28 -0
- data/Gemfile +4 -3
- data/README.md +3 -2
- data/Steepfile +21 -0
- data/db/jyunishi.json +24 -12
- data/etoji.gemspec +1 -5
- data/lib/etoji/jikkan.rb +1 -1
- data/lib/etoji/jyunishi.rb +3 -2
- data/lib/etoji/version.rb +1 -1
- data/lib/etoji.rb +3 -3
- data/sig/lib/etoji/jikkan.rbs +22 -0
- data/sig/lib/etoji/jyunishi.rbs +26 -0
- data/sig/lib/etoji/version.rbs +3 -0
- data/sig/lib/etoji.rbs +11 -0
- data/sig/patch/data.rbs +3 -0
- metadata +24 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afd0c2d37f817f5949e3a7741963b706ab949db07a7fb73f2e36526d8942dd04
|
4
|
+
data.tar.gz: ac4ebdb09514199ede54c8be287d27a837f6531ba01e6980e73ed4cebeceef22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Etoji
|
2
2
|
|
3
|
-
[](https://github.com/MITSUBOSHI/etoji/actions/workflows/test.yml)
|
3
|
+
[](https://github.com/MITSUBOSHI/etoji/actions/workflows/test.yml)[](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
|
-
#
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
|
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],
|
data/lib/etoji/jyunishi.rb
CHANGED
@@ -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
|
-
|
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
data/lib/etoji.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
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
|
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
|
data/sig/patch/data.rbs
ADDED
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.
|
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-
|
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
|