amakanize 0.7.0 → 0.8.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/release.yml +23 -0
- data/.github/workflows/bump-request.yml +26 -0
- data/.github/workflows/github-label-sync.yml +18 -0
- data/.github/workflows/release.yml +12 -0
- data/.github/workflows/test.yml +27 -0
- data/.gitignore +0 -1
- data/.rubocop.yml +3 -73
- data/Gemfile +7 -1
- data/Gemfile.lock +58 -0
- data/README.md +2 -4
- data/Rakefile +10 -3
- data/amakanize.gemspec +13 -14
- data/lib/amakanize/author_name.rb +4 -2
- data/lib/amakanize/author_names.rb +5 -5
- data/lib/amakanize/book_position.rb +4 -2
- data/lib/amakanize/filterable.rb +3 -1
- data/lib/amakanize/filters/base_filter.rb +2 -0
- data/lib/amakanize/filters/book_position_at_end_detection_filter.rb +8 -8
- data/lib/amakanize/filters/book_position_clearing_filter.rb +5 -5
- data/lib/amakanize/filters/book_position_in_bracket_detection_filter.rb +8 -8
- data/lib/amakanize/filters/book_position_in_words_detection_filter.rb +8 -8
- data/lib/amakanize/filters/book_position_number_canonicalization_filter.rb +5 -5
- data/lib/amakanize/filters/brackets_normalization_filter.rb +4 -2
- data/lib/amakanize/filters/continuous_spaces_normalization_filter.rb +4 -2
- data/lib/amakanize/filters/dash_between_alphabets_normalization_filter.rb +4 -2
- data/lib/amakanize/filters/html_unescape_filter.rb +5 -3
- data/lib/amakanize/filters/hyphen_minus_normalization_filter.rb +4 -2
- data/lib/amakanize/filters/normalization_filter.rb +4 -2
- data/lib/amakanize/filters/obvious_volume_number_deletion_filter.rb +7 -5
- data/lib/amakanize/filters/parentheses_deletion_filter.rb +4 -2
- data/lib/amakanize/filters/role_name_deletion_filter.rb +9 -7
- data/lib/amakanize/filters/space_between_exclamation_and_bracket_deletion_filter.rb +4 -2
- data/lib/amakanize/filters/space_deletion_filter.rb +4 -2
- data/lib/amakanize/filters/spaces_between_exclamations_deletion_filter.rb +4 -2
- data/lib/amakanize/filters/strip_filter.rb +4 -2
- data/lib/amakanize/filters/trailing_author_name_payload_deletion_filter.rb +6 -4
- data/lib/amakanize/filters/trailing_dash_deletion_filter.rb +6 -4
- data/lib/amakanize/filters/trailing_double_parentheses_singlization_filter.rb +6 -4
- data/lib/amakanize/filters/trailing_parentheses_deletion_filter.rb +5 -5
- data/lib/amakanize/filters/trailing_series_name_payload_deletion_filter.rb +5 -3
- data/lib/amakanize/filters/trailing_symbol_deletion_filter.rb +6 -4
- data/lib/amakanize/filters/trailing_volume_number_deletion_filter.rb +5 -5
- data/lib/amakanize/filters/video_position_detection_filter.rb +10 -9
- data/lib/amakanize/filters/video_position_number_conversion_filter.rb +115 -113
- data/lib/amakanize/series_name.rb +4 -2
- data/lib/amakanize/version.rb +3 -1
- data/lib/amakanize/video_position.rb +4 -2
- data/lib/amakanize.rb +41 -39
- metadata +11 -47
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -10,7 +12,7 @@ module Amakanize
|
|
10
12
|
def call(context:, output:)
|
11
13
|
{
|
12
14
|
context: context,
|
13
|
-
output: output.tr(
|
15
|
+
output: output.tr('‐', '-')
|
14
16
|
}
|
15
17
|
end
|
16
18
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -9,7 +11,7 @@ module Amakanize
|
|
9
11
|
def call(context:, output:)
|
10
12
|
{
|
11
13
|
context: context,
|
12
|
-
output: output.unicode_normalize(:nfkc)
|
14
|
+
output: output.unicode_normalize(:nfkc)
|
13
15
|
}
|
14
16
|
end
|
15
17
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -9,9 +11,9 @@ module Amakanize
|
|
9
11
|
/\s+#{::Amakanize::PATTERN_OF_VOLUME_PREFIX}#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}\s+.*/,
|
10
12
|
/\s+Lv\.?\s*#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}(?:\s+.*|\z)/,
|
11
13
|
/\s*\(#{::Amakanize::PATTERN_OF_VOLUME_PREFIX}?#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}\).*/,
|
12
|
-
%r
|
14
|
+
%r{\s*\d+年\s*\d+\s*(?:月|/\d+\s*)号.*},
|
13
15
|
/\s*\d{4}\s*(?:AUTUMN|SPRING|SUMMER|WINTER)/,
|
14
|
-
/\s*\d+年\s*\d+\s
|
16
|
+
/\s*\d+年\s*\d+\s*号.*/
|
15
17
|
)
|
16
18
|
|
17
19
|
# @note Override
|
@@ -21,12 +23,12 @@ module Amakanize
|
|
21
23
|
unless context[:volume_number_removed]
|
22
24
|
output = output.sub(PATTERN) do
|
23
25
|
context[:volume_number_removed] = true
|
24
|
-
|
26
|
+
''
|
25
27
|
end
|
26
28
|
end
|
27
29
|
{
|
28
30
|
context: context,
|
29
|
-
output: output
|
31
|
+
output: output
|
30
32
|
}
|
31
33
|
end
|
32
34
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -9,7 +11,7 @@ module Amakanize
|
|
9
11
|
def call(context:, output:)
|
10
12
|
{
|
11
13
|
context: context,
|
12
|
-
output: output.gsub(/\((\d+)\)/, '\1')
|
14
|
+
output: output.gsub(/\((\d+)\)/, '\1')
|
13
15
|
}
|
14
16
|
end
|
15
17
|
end
|
@@ -1,17 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
5
7
|
class RoleNameDeletionFilter < ::Amakanize::Filters::BaseFilter
|
6
8
|
PATTERN_OF_ROLE_NAME = ::Regexp.union(
|
7
|
-
%w
|
9
|
+
%w[
|
8
10
|
イラスト
|
9
11
|
カバーデザイン
|
10
12
|
キャラクター原案
|
11
13
|
原作
|
12
14
|
原案
|
13
15
|
漫画
|
14
|
-
|
16
|
+
]
|
15
17
|
)
|
16
18
|
|
17
19
|
# @note Override
|
@@ -21,10 +23,10 @@ module Amakanize
|
|
21
23
|
{
|
22
24
|
context: context,
|
23
25
|
output: output
|
24
|
-
.gsub(%r
|
25
|
-
.gsub(%r
|
26
|
-
.gsub(/\A\(#{PATTERN_OF_ROLE_NAME}(?:・#{PATTERN_OF_ROLE_NAME})*\)/,
|
27
|
-
.gsub(/\(#{PATTERN_OF_ROLE_NAME}(?:・#{PATTERN_OF_ROLE_NAME})*\)\z/,
|
26
|
+
.gsub(%r{\A#{PATTERN_OF_ROLE_NAME}[:/]}, '')
|
27
|
+
.gsub(%r{[:/]#{PATTERN_OF_ROLE_NAME}\z}, '')
|
28
|
+
.gsub(/\A\(#{PATTERN_OF_ROLE_NAME}(?:・#{PATTERN_OF_ROLE_NAME})*\)/, '')
|
29
|
+
.gsub(/\(#{PATTERN_OF_ROLE_NAME}(?:・#{PATTERN_OF_ROLE_NAME})*\)\z/, '')
|
28
30
|
}
|
29
31
|
end
|
30
32
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -9,7 +11,7 @@ module Amakanize
|
|
9
11
|
def call(context:, output:)
|
10
12
|
{
|
11
13
|
context: context,
|
12
|
-
output: output.gsub(/!\s+」/,
|
14
|
+
output: output.gsub(/!\s+」/, '!」')
|
13
15
|
}
|
14
16
|
end
|
15
17
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -9,7 +11,7 @@ module Amakanize
|
|
9
11
|
def call(context:, output:)
|
10
12
|
{
|
11
13
|
context: context,
|
12
|
-
output: output.gsub(/\s+/,
|
14
|
+
output: output.gsub(/\s+/, '')
|
13
15
|
}
|
14
16
|
end
|
15
17
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -9,7 +11,7 @@ module Amakanize
|
|
9
11
|
def call(context:, output:)
|
10
12
|
{
|
11
13
|
context: context,
|
12
|
-
output: output.gsub(/!\s+!/,
|
14
|
+
output: output.gsub(/!\s+!/, '!!')
|
13
15
|
}
|
14
16
|
end
|
15
17
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -9,7 +11,7 @@ module Amakanize
|
|
9
11
|
def call(context:, output:)
|
10
12
|
{
|
11
13
|
context: context,
|
12
|
-
output: output.strip
|
14
|
+
output: output.strip
|
13
15
|
}
|
14
16
|
end
|
15
17
|
end
|
@@ -1,16 +1,18 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
5
7
|
class TrailingAuthorNamePayloadDeletionFilter < ::Amakanize::Filters::BaseFilter
|
6
|
-
PAYLOADS = %w
|
8
|
+
PAYLOADS = %w[
|
7
9
|
その他
|
8
10
|
ほか
|
9
11
|
他
|
10
12
|
原作
|
11
13
|
原案
|
12
14
|
漫画
|
13
|
-
|
15
|
+
].freeze
|
14
16
|
|
15
17
|
# @note Override
|
16
18
|
# @param output [String] e.g. `"ハノカゲ ほか"`
|
@@ -18,7 +20,7 @@ module Amakanize
|
|
18
20
|
def call(context:, output:)
|
19
21
|
{
|
20
22
|
context: context,
|
21
|
-
output: output.gsub(/\s+#{::Regexp.union(PAYLOADS)}\z/,
|
23
|
+
output: output.gsub(/\s+#{::Regexp.union(PAYLOADS)}\z/, '')
|
22
24
|
}
|
23
25
|
end
|
24
26
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
5
7
|
class TrailingDashDeletionFilter < ::Amakanize::Filters::BaseFilter
|
6
|
-
TOKENS = %w
|
8
|
+
TOKENS = %w[
|
7
9
|
̃
|
8
10
|
̰
|
9
11
|
̴
|
@@ -20,7 +22,7 @@ module Amakanize
|
|
20
22
|
~
|
21
23
|
∼
|
22
24
|
─
|
23
|
-
|
25
|
+
].freeze
|
24
26
|
|
25
27
|
# @note Override
|
26
28
|
# @param output [String] e.g. `"アド・アストラ 1 ─スキピオとハンニバル─"`
|
@@ -28,7 +30,7 @@ module Amakanize
|
|
28
30
|
def call(context:, output:)
|
29
31
|
{
|
30
32
|
context: context,
|
31
|
-
output: output.gsub(/\s*#{::Regexp.union(TOKENS)}.*/,
|
33
|
+
output: output.gsub(/\s*#{::Regexp.union(TOKENS)}.*/, '')
|
32
34
|
}
|
33
35
|
end
|
34
36
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -9,9 +11,9 @@ module Amakanize
|
|
9
11
|
def call(context:, output:)
|
10
12
|
{
|
11
13
|
context: context,
|
12
|
-
output: output.sub(/\([
|
13
|
-
"(
|
14
|
-
end
|
14
|
+
output: output.sub(/\([^(^)]+?\([^(]+?\)[^)^(]+?\)\z/) do
|
15
|
+
"(#{::Regexp.last_match(0).gsub(/[()]/, '')})"
|
16
|
+
end
|
15
17
|
}
|
16
18
|
end
|
17
19
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -7,12 +9,10 @@ module Amakanize
|
|
7
9
|
# @param output [String] e.g. `"魔法使いの嫁 通常版 4 (BLADE COMICS)"`
|
8
10
|
# @return [Hash] e.g. `"魔法使いの嫁 通常版 4"`
|
9
11
|
def call(context:, output:)
|
10
|
-
unless context[:volume_number_removed]
|
11
|
-
output = output.sub(/\s*\([^\(]+\)\z/, "")
|
12
|
-
end
|
12
|
+
output = output.sub(/\s*\([^(]+\)\z/, '') unless context[:volume_number_removed]
|
13
13
|
{
|
14
14
|
context: context,
|
15
|
-
output: output
|
15
|
+
output: output
|
16
16
|
}
|
17
17
|
end
|
18
18
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -6,7 +8,7 @@ module Amakanize
|
|
6
8
|
PAYLOADS = %w(
|
7
9
|
通常版
|
8
10
|
(未分類)
|
9
|
-
)
|
11
|
+
).freeze
|
10
12
|
|
11
13
|
# @note Override
|
12
14
|
# @param output [String] e.g. `"魔法使いの嫁 通常版"`
|
@@ -14,7 +16,7 @@ module Amakanize
|
|
14
16
|
def call(context:, output:)
|
15
17
|
{
|
16
18
|
context: context,
|
17
|
-
output: output.gsub(/\s+#{::Regexp.union(PAYLOADS)}\z/,
|
19
|
+
output: output.gsub(/\s+#{::Regexp.union(PAYLOADS)}\z/, '')
|
18
20
|
}
|
19
21
|
end
|
20
22
|
end
|
@@ -1,16 +1,18 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
5
7
|
class TrailingSymbolDeletionFilter < ::Amakanize::Filters::BaseFilter
|
6
|
-
PATTERN = /\s*[-:]\z
|
8
|
+
PATTERN = /\s*[-:]\z/.freeze
|
7
9
|
|
8
10
|
# @note Override
|
9
11
|
def call(context:, output:)
|
10
|
-
output = output.gsub(PATTERN,
|
12
|
+
output = output.gsub(PATTERN, '')
|
11
13
|
{
|
12
14
|
context: context,
|
13
|
-
output: output
|
15
|
+
output: output
|
14
16
|
}
|
15
17
|
end
|
16
18
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -7,12 +9,10 @@ module Amakanize
|
|
7
9
|
# @param output [String] e.g. `"やはり俺の青春ラブコメはまちがっている。4"`, `"ネトゲの嫁は女の子じゃないと思った? Lv.2"`
|
8
10
|
# @return [Hash] e.g. `"やはり俺の青春ラブコメはまちがっている。"`, `"ネトゲの嫁は女の子じゃないと思った?"`
|
9
11
|
def call(context:, output:)
|
10
|
-
if !context[:volume_number_removed] && !output.match(/[^\s]Lv\.?\s*#{Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}\z/i)
|
11
|
-
output = output.sub(/,?\s*#{PATTERN_OF_VOLUME_PREFIX}?#{Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}(?:話|巻|版)?(?:\s*\(.*?\))?\z/, "")
|
12
|
-
end
|
12
|
+
output = output.sub(/,?\s*#{PATTERN_OF_VOLUME_PREFIX}?#{Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}(?:話|巻|版)?(?:\s*\(.*?\))?\z/, '') if !context[:volume_number_removed] && !output.match(/[^\s]Lv\.?\s*#{Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}\z/i)
|
13
13
|
{
|
14
14
|
context: context,
|
15
|
-
output: output
|
15
|
+
output: output
|
16
16
|
}
|
17
17
|
end
|
18
18
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -7,16 +9,15 @@ module Amakanize
|
|
7
9
|
# @param output [String] e.g. `"第1話「でじこだにょ」/第2話「ぷちこと一緒かにょ?」"`
|
8
10
|
# @return [Hash] e.g. `"1"`
|
9
11
|
def call(context:, output:)
|
10
|
-
output =
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
12
|
+
output = if output.match(/#{::Amakanize::PATTERN_OF_VOLUME_PREFIX}(#{PATTERN_OF_NUMERIC_CHARACTERS})/)
|
13
|
+
::Regexp.last_match(1)
|
14
|
+
else
|
15
|
+
''
|
16
|
+
end
|
17
|
+
|
17
18
|
{
|
18
19
|
context: context,
|
19
|
-
output: output
|
20
|
+
output: output
|
20
21
|
}
|
21
22
|
end
|
22
23
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'amakanize/filters/base_filter'
|
2
4
|
|
3
5
|
module Amakanize
|
4
6
|
module Filters
|
@@ -34,125 +36,125 @@ module Amakanize
|
|
34
36
|
/xxviii/i => 28,
|
35
37
|
/xxix/i => 29,
|
36
38
|
/xxx/i => 30,
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
}
|
39
|
+
'一' => 1,
|
40
|
+
'二' => 2,
|
41
|
+
'三' => 3,
|
42
|
+
'四' => 4,
|
43
|
+
'五' => 5,
|
44
|
+
'六' => 6,
|
45
|
+
'七' => 7,
|
46
|
+
'八' => 8,
|
47
|
+
'九' => 9,
|
48
|
+
'十' => 10,
|
49
|
+
'十一' => 11,
|
50
|
+
'十二' => 12,
|
51
|
+
'十三' => 13,
|
52
|
+
'十四' => 14,
|
53
|
+
'十五' => 15,
|
54
|
+
'十六' => 16,
|
55
|
+
'十七' => 17,
|
56
|
+
'十八' => 18,
|
57
|
+
'十九' => 19,
|
58
|
+
'二十' => 20,
|
59
|
+
'二十一' => 21,
|
60
|
+
'二十二' => 22,
|
61
|
+
'二十三' => 23,
|
62
|
+
'二十四' => 24,
|
63
|
+
'二十五' => 25,
|
64
|
+
'二十六' => 26,
|
65
|
+
'二十七' => 27,
|
66
|
+
'二十八' => 28,
|
67
|
+
'二十九' => 29,
|
68
|
+
'三十' => 30,
|
69
|
+
'三十一' => 31,
|
70
|
+
'三十二' => 32,
|
71
|
+
'三十三' => 33,
|
72
|
+
'三十四' => 34,
|
73
|
+
'三十五' => 35,
|
74
|
+
'三十六' => 36,
|
75
|
+
'三十七' => 37,
|
76
|
+
'三十八' => 38,
|
77
|
+
'三十九' => 39,
|
78
|
+
'四十' => 40,
|
79
|
+
'四十一' => 41,
|
80
|
+
'四十二' => 42,
|
81
|
+
'四十三' => 43,
|
82
|
+
'四十四' => 44,
|
83
|
+
'四十五' => 45,
|
84
|
+
'四十六' => 46,
|
85
|
+
'四十七' => 47,
|
86
|
+
'四十八' => 48,
|
87
|
+
'四十九' => 49,
|
88
|
+
'五十' => 50,
|
89
|
+
'五十一' => 51,
|
90
|
+
'五十二' => 52,
|
91
|
+
'五十三' => 53,
|
92
|
+
'五十四' => 54,
|
93
|
+
'五十五' => 55,
|
94
|
+
'五十六' => 56,
|
95
|
+
'五十七' => 57,
|
96
|
+
'五十八' => 58,
|
97
|
+
'五十九' => 59,
|
98
|
+
'六十' => 60,
|
99
|
+
'六十一' => 61,
|
100
|
+
'六十二' => 62,
|
101
|
+
'六十三' => 63,
|
102
|
+
'六十四' => 64,
|
103
|
+
'六十五' => 65,
|
104
|
+
'六十六' => 66,
|
105
|
+
'六十七' => 67,
|
106
|
+
'六十八' => 68,
|
107
|
+
'六十九' => 69,
|
108
|
+
'七十' => 70,
|
109
|
+
'七十一' => 71,
|
110
|
+
'七十二' => 72,
|
111
|
+
'七十三' => 73,
|
112
|
+
'七十四' => 74,
|
113
|
+
'七十五' => 75,
|
114
|
+
'七十六' => 76,
|
115
|
+
'七十七' => 77,
|
116
|
+
'七十八' => 78,
|
117
|
+
'七十九' => 79,
|
118
|
+
'八十' => 80,
|
119
|
+
'八十一' => 81,
|
120
|
+
'八十二' => 82,
|
121
|
+
'八十三' => 83,
|
122
|
+
'八十四' => 84,
|
123
|
+
'八十五' => 85,
|
124
|
+
'八十六' => 86,
|
125
|
+
'八十七' => 87,
|
126
|
+
'八十八' => 88,
|
127
|
+
'八十九' => 89,
|
128
|
+
'九十' => 90,
|
129
|
+
'九十一' => 91,
|
130
|
+
'九十二' => 92,
|
131
|
+
'九十三' => 93,
|
132
|
+
'九十四' => 94,
|
133
|
+
'九十五' => 95,
|
134
|
+
'九十六' => 96,
|
135
|
+
'九十七' => 97,
|
136
|
+
'九十八' => 98,
|
137
|
+
'九十九' => 99,
|
138
|
+
'①' => 1,
|
139
|
+
'②' => 2,
|
140
|
+
'③' => 3,
|
141
|
+
'④' => 4,
|
142
|
+
'⑤' => 5,
|
143
|
+
'⑥' => 6,
|
144
|
+
'⑦' => 7,
|
145
|
+
'⑧' => 8,
|
146
|
+
'⑨' => 9,
|
147
|
+
'⑩' => 10
|
148
|
+
}.freeze
|
147
149
|
|
148
150
|
# @note Override
|
149
151
|
def call(context:, output:)
|
150
152
|
output = TABLE.to_a.reverse.each_with_object(output.clone) do |(key, value), result|
|
151
|
-
result.gsub
|
153
|
+
result.gsub(key, value.to_s)
|
152
154
|
end
|
153
155
|
{
|
154
156
|
context: context,
|
155
|
-
output: output
|
157
|
+
output: output
|
156
158
|
}
|
157
159
|
end
|
158
160
|
end
|