ya_kansuji 0.2.0 → 1.0.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/ChangeLog +6 -0
- data/README.md +1 -0
- data/lib/ya_kansuji/core_refine.rb +2 -2
- data/lib/ya_kansuji/formatter/gov.rb +3 -3
- data/lib/ya_kansuji/formatter/judic_h.rb +4 -3
- data/lib/ya_kansuji/formatter/judic_v.rb +4 -3
- data/lib/ya_kansuji/formatter/lawyer.rb +3 -2
- data/lib/ya_kansuji/formatter/simple.rb +3 -3
- data/lib/ya_kansuji/version.rb +1 -1
- data/lib/ya_kansuji.rb +7 -5
- metadata +9 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de9deb8ed6a818c9939482fc8c6408ec00659a67810dfc0eb034ae9bcc821a43
|
4
|
+
data.tar.gz: 701f44b2de1b5186c1f92f8779840af3ae2ca873fd820a4120e4d653ed194888
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8c3263df051a72dc07c1a8a38acf59f1f94c8b896bb9f2d718637f0b808d7d6b0c02bf43975c892fb1c634a5affd9f02f094be4911a926d5218ab467a6ff794
|
7
|
+
data.tar.gz: 69c8d4b5413a6ec864ac3d7e4e70d258c0f01ecd7684f30ff6c4a414b59751403807eb2850be44489a900df306e54e4f16e50f36555a165675c9f16c4ba33e55
|
data/ChangeLog
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
[<img src="https://travis-ci.org/sugi/ya_kansuji.svg?branch=master" alt="Build Status" />](https://travis-ci.org/sugi/ya_kansuji)
|
5
5
|
[<img src="https://coveralls.io/repos/sugi/ya_kansuji/badge.svg?branch=master&service=github" alt="Coverage Status" />](https://coveralls.io/github/sugi/ya_kansuji?branch=master)
|
6
6
|
[](https://codeclimate.com/github/sugi/ya_kansuji/maintainability)
|
7
|
+
[](https://app.codacy.com/gh/sugi/ya_kansuji/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
7
8
|
|
8
9
|
Yet another (ultimate) Japanese Kansuji library for ruby.
|
9
10
|
|
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
require 'ya_kansuji'
|
4
4
|
|
5
|
-
# String and Integer refinements with YaKansuji
|
6
5
|
module YaKansuji
|
6
|
+
# String and Integer refinements with YaKansuji
|
7
7
|
module CoreRefine
|
8
8
|
refine String do
|
9
9
|
def to_i(base = nil)
|
10
10
|
if base.nil? || base == :kan || base == :kansuji
|
11
11
|
YaKansuji.to_i self
|
12
12
|
else
|
13
|
-
super
|
13
|
+
super
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
# Simple kansuji formatter
|
2
1
|
module YaKansuji
|
3
2
|
module Formatter
|
3
|
+
# Formatter for Japan government-style kansuji
|
4
4
|
module Gov
|
5
5
|
module_function
|
6
6
|
|
@@ -9,14 +9,14 @@ module YaKansuji
|
|
9
9
|
|
10
10
|
parts = []
|
11
11
|
(UNIT_EXP4.reverse + ['']).each_with_index do |unit4, ridx4|
|
12
|
-
i4 = (num / 10_000**(UNIT_EXP4.size - ridx4)).to_i % 10_000
|
12
|
+
i4 = (num / (10_000**(UNIT_EXP4.size - ridx4))).to_i % 10_000
|
13
13
|
next if i4.zero?
|
14
14
|
|
15
15
|
if i4 == 1
|
16
16
|
parts << "1#{unit4}"
|
17
17
|
next
|
18
18
|
end
|
19
|
-
parts << i4.to_s + unit4
|
19
|
+
parts << (i4.to_s + unit4)
|
20
20
|
end
|
21
21
|
parts.join(', ')
|
22
22
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Simple kansuji formatter
|
2
2
|
module YaKansuji
|
3
3
|
module Formatter
|
4
|
+
# Formatter for Jpanese judicial style kansuji (arabic numerals version)
|
4
5
|
module JudicH
|
5
6
|
module_function
|
6
7
|
|
@@ -10,13 +11,13 @@ module YaKansuji
|
|
10
11
|
ret = ''
|
11
12
|
head = true
|
12
13
|
(UNIT_EXP4.reverse + ['']).each_with_index do |unit4, ridx4|
|
13
|
-
i4 = (num / 10_000**(UNIT_EXP4.size - ridx4)).to_i % 10_000
|
14
|
+
i4 = (num / (10_000**(UNIT_EXP4.size - ridx4))).to_i % 10_000
|
14
15
|
next if i4.zero?
|
15
16
|
|
16
17
|
if head
|
17
|
-
ret << i4.to_s + unit4
|
18
|
+
ret << (i4.to_s + unit4)
|
18
19
|
else
|
19
|
-
ret << ('%04d' % i4) + unit4
|
20
|
+
ret << (('%04d' % i4) + unit4)
|
20
21
|
end
|
21
22
|
head = false
|
22
23
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Simple kansuji formatter
|
2
2
|
module YaKansuji
|
3
3
|
module Formatter
|
4
|
+
# Formatter for Jpanese judicial style kansuji (kanji numerals version)
|
4
5
|
module JudicV
|
5
6
|
module_function
|
6
7
|
|
@@ -10,13 +11,13 @@ module YaKansuji
|
|
10
11
|
ret = ''
|
11
12
|
head = true
|
12
13
|
(UNIT_EXP4.reverse + ['']).each_with_index do |unit4, ridx4|
|
13
|
-
i4 = (num / 10_000**(UNIT_EXP4.size - ridx4)).to_i % 10_000
|
14
|
+
i4 = (num / (10_000**(UNIT_EXP4.size - ridx4))).to_i % 10_000
|
14
15
|
next if i4.zero?
|
15
16
|
|
16
17
|
if head
|
17
|
-
ret << i4.to_s + unit4
|
18
|
+
ret << (i4.to_s + unit4)
|
18
19
|
else
|
19
|
-
ret << ('%04d' % i4) + unit4
|
20
|
+
ret << (('%04d' % i4) + unit4)
|
20
21
|
end
|
21
22
|
head = false
|
22
23
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Simple kansuji formatter
|
2
2
|
module YaKansuji
|
3
3
|
module Formatter
|
4
|
+
# Formatter for Jpanese lawyer style kansuji
|
4
5
|
module Lawyer
|
5
6
|
module_function
|
6
7
|
|
@@ -9,7 +10,7 @@ module YaKansuji
|
|
9
10
|
|
10
11
|
ret = ''
|
11
12
|
(UNIT_EXP4.reverse + ['']).each_with_index do |unit4, ridx4|
|
12
|
-
i4 = (num / 10_000**(UNIT_EXP4.size - ridx4)).to_i % 10_000
|
13
|
+
i4 = (num / (10_000**(UNIT_EXP4.size - ridx4))).to_i % 10_000
|
13
14
|
next if i4.zero?
|
14
15
|
|
15
16
|
if i4 == 1
|
@@ -17,7 +18,7 @@ module YaKansuji
|
|
17
18
|
next
|
18
19
|
end
|
19
20
|
|
20
|
-
ret << (i4 >= 1000 ? "#{i4.to_s[0]},#{i4.to_s[1..-1]}" : i4.to_s) + unit4
|
21
|
+
ret << ((i4 >= 1000 ? "#{i4.to_s[0]},#{i4.to_s[1..-1]}" : i4.to_s) + unit4)
|
21
22
|
end
|
22
23
|
ret
|
23
24
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Simple kansuji formatter
|
4
3
|
module YaKansuji
|
5
4
|
module Formatter
|
5
|
+
# Simple kansuji formatter
|
6
6
|
module Simple
|
7
7
|
module_function
|
8
8
|
|
@@ -11,7 +11,7 @@ module YaKansuji
|
|
11
11
|
|
12
12
|
ret = ''
|
13
13
|
(UNIT_EXP4.reverse + ['']).each_with_index do |unit4, ridx4|
|
14
|
-
i4 = (num / 10_000**(UNIT_EXP4.size - ridx4)).to_i % 10_000
|
14
|
+
i4 = (num / (10_000**(UNIT_EXP4.size - ridx4))).to_i % 10_000
|
15
15
|
next if i4.zero?
|
16
16
|
|
17
17
|
if i4 == 1
|
@@ -19,7 +19,7 @@ module YaKansuji
|
|
19
19
|
next
|
20
20
|
end
|
21
21
|
(UNIT_EXP3.reverse + ['']).each_with_index do |unit3, ridx3|
|
22
|
-
i3 = (i4 / 10**(UNIT_EXP3.size - ridx3)).to_i % 10
|
22
|
+
i3 = (i4 / (10**(UNIT_EXP3.size - ridx3))).to_i % 10
|
23
23
|
next if i3.zero?
|
24
24
|
|
25
25
|
if i3 == 1 && unit3 != ''
|
data/lib/ya_kansuji/version.rb
CHANGED
data/lib/ya_kansuji.rb
CHANGED
@@ -7,8 +7,9 @@ require 'ya_kansuji/core_refine'
|
|
7
7
|
module YaKansuji
|
8
8
|
UNIT_EXP3 = %w(十 百 千).freeze
|
9
9
|
UNIT_EXP4 = %w(万 億 兆 京 垓 𥝱 穣 溝 澗 正 載 極 恒河沙 阿僧祇 那由他 不可思議 無量大数).freeze
|
10
|
-
NUM_ALT_CHARS = '〇一二三四五六七八九0123456789零壱壹弌弐貳貮参參弎肆伍陸漆質柒捌玖拾什陌佰阡仟萬秭'
|
11
|
-
NUM_NORMALIZED_CHARS = '01234567890123456789011122233345677789十十百百千千万𥝱'
|
10
|
+
NUM_ALT_CHARS = '〇一二三四五六七八九0123456789零壱壹弌弐貳貮参參弎肆伍陸漆質柒捌玖拾什陌佰阡仟萬秭'
|
11
|
+
NUM_NORMALIZED_CHARS = '01234567890123456789011122233345677789十十百百千千万𥝱'
|
12
|
+
# rubocop:disable Lint/DuplicateRegexpCharacterClassElement
|
12
13
|
REGEXP_PART = %r{
|
13
14
|
[
|
14
15
|
#{(NUM_ALT_CHARS + NUM_NORMALIZED_CHARS).chars.uniq.join}
|
@@ -17,6 +18,7 @@ module YaKansuji
|
|
17
18
|
] |
|
18
19
|
#{UNIT_EXP4.find_all { |u| u.length > 1 }.join('|')}
|
19
20
|
}x.freeze
|
21
|
+
# rubocop:enable Lint/DuplicateRegexpCharacterClassElement
|
20
22
|
REGEXP = /(?:#{REGEXP_PART})+/.freeze
|
21
23
|
@@formatters = {}
|
22
24
|
|
@@ -24,7 +26,7 @@ module YaKansuji
|
|
24
26
|
|
25
27
|
def to_i(str)
|
26
28
|
str = str.to_s.tr(NUM_ALT_CHARS, NUM_NORMALIZED_CHARS)
|
27
|
-
str.gsub!(/[
|
29
|
+
str.gsub!(/[,,、[:space:]]/, '')
|
28
30
|
matched = REGEXP.match(str) or return 0
|
29
31
|
ret3 = 0
|
30
32
|
ret4 = 0
|
@@ -63,11 +65,11 @@ module YaKansuji
|
|
63
65
|
curnum = nil
|
64
66
|
end
|
65
67
|
ret3 = 1 if ret3.zero?
|
66
|
-
ret4 += ret3 * 10**((UNIT_EXP4.index(c) + 1) * 4)
|
68
|
+
ret4 += ret3 * (10**((UNIT_EXP4.index(c) + 1) * 4))
|
67
69
|
ret3 = 0
|
68
70
|
when *UNIT_EXP3
|
69
71
|
curnum ||= 1
|
70
|
-
ret3 += curnum * 10**(UNIT_EXP3.index(c) + 1)
|
72
|
+
ret3 += curnum * (10**(UNIT_EXP3.index(c) + 1))
|
71
73
|
curnum = nil
|
72
74
|
end
|
73
75
|
end
|
metadata
CHANGED
@@ -1,57 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ya_kansuji
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tatsuki Sugiura
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.9'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.9'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.0'
|
11
|
+
date: 2025-03-09 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
55
13
|
description: |
|
56
14
|
Pure ruby library of Japanese kansuji.
|
57
15
|
Bi-directional convert support between number and kanji string.
|
@@ -76,8 +34,9 @@ files:
|
|
76
34
|
homepage: https://github.com/sugi/ya_kansuji
|
77
35
|
licenses:
|
78
36
|
- MIT
|
79
|
-
metadata:
|
80
|
-
|
37
|
+
metadata:
|
38
|
+
rubygems_mfa_required: 'true'
|
39
|
+
post_install_message:
|
81
40
|
rdoc_options: []
|
82
41
|
require_paths:
|
83
42
|
- lib
|
@@ -92,9 +51,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
51
|
- !ruby/object:Gem::Version
|
93
52
|
version: '0'
|
94
53
|
requirements: []
|
95
|
-
|
96
|
-
|
97
|
-
signing_key:
|
54
|
+
rubygems_version: 3.1.6
|
55
|
+
signing_key:
|
98
56
|
specification_version: 4
|
99
57
|
summary: Japanese kansuji library for ruby
|
100
58
|
test_files: []
|