etoji 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![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
|
-
#
|
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
|