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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/release.yml +23 -0
  3. data/.github/workflows/bump-request.yml +26 -0
  4. data/.github/workflows/github-label-sync.yml +18 -0
  5. data/.github/workflows/release.yml +12 -0
  6. data/.github/workflows/test.yml +27 -0
  7. data/.gitignore +0 -1
  8. data/.rubocop.yml +3 -73
  9. data/Gemfile +7 -1
  10. data/Gemfile.lock +58 -0
  11. data/README.md +2 -4
  12. data/Rakefile +10 -3
  13. data/amakanize.gemspec +13 -14
  14. data/lib/amakanize/author_name.rb +4 -2
  15. data/lib/amakanize/author_names.rb +5 -5
  16. data/lib/amakanize/book_position.rb +4 -2
  17. data/lib/amakanize/filterable.rb +3 -1
  18. data/lib/amakanize/filters/base_filter.rb +2 -0
  19. data/lib/amakanize/filters/book_position_at_end_detection_filter.rb +8 -8
  20. data/lib/amakanize/filters/book_position_clearing_filter.rb +5 -5
  21. data/lib/amakanize/filters/book_position_in_bracket_detection_filter.rb +8 -8
  22. data/lib/amakanize/filters/book_position_in_words_detection_filter.rb +8 -8
  23. data/lib/amakanize/filters/book_position_number_canonicalization_filter.rb +5 -5
  24. data/lib/amakanize/filters/brackets_normalization_filter.rb +4 -2
  25. data/lib/amakanize/filters/continuous_spaces_normalization_filter.rb +4 -2
  26. data/lib/amakanize/filters/dash_between_alphabets_normalization_filter.rb +4 -2
  27. data/lib/amakanize/filters/html_unescape_filter.rb +5 -3
  28. data/lib/amakanize/filters/hyphen_minus_normalization_filter.rb +4 -2
  29. data/lib/amakanize/filters/normalization_filter.rb +4 -2
  30. data/lib/amakanize/filters/obvious_volume_number_deletion_filter.rb +7 -5
  31. data/lib/amakanize/filters/parentheses_deletion_filter.rb +4 -2
  32. data/lib/amakanize/filters/role_name_deletion_filter.rb +9 -7
  33. data/lib/amakanize/filters/space_between_exclamation_and_bracket_deletion_filter.rb +4 -2
  34. data/lib/amakanize/filters/space_deletion_filter.rb +4 -2
  35. data/lib/amakanize/filters/spaces_between_exclamations_deletion_filter.rb +4 -2
  36. data/lib/amakanize/filters/strip_filter.rb +4 -2
  37. data/lib/amakanize/filters/trailing_author_name_payload_deletion_filter.rb +6 -4
  38. data/lib/amakanize/filters/trailing_dash_deletion_filter.rb +6 -4
  39. data/lib/amakanize/filters/trailing_double_parentheses_singlization_filter.rb +6 -4
  40. data/lib/amakanize/filters/trailing_parentheses_deletion_filter.rb +5 -5
  41. data/lib/amakanize/filters/trailing_series_name_payload_deletion_filter.rb +5 -3
  42. data/lib/amakanize/filters/trailing_symbol_deletion_filter.rb +6 -4
  43. data/lib/amakanize/filters/trailing_volume_number_deletion_filter.rb +5 -5
  44. data/lib/amakanize/filters/video_position_detection_filter.rb +10 -9
  45. data/lib/amakanize/filters/video_position_number_conversion_filter.rb +115 -113
  46. data/lib/amakanize/series_name.rb +4 -2
  47. data/lib/amakanize/version.rb +3 -1
  48. data/lib/amakanize/video_position.rb +4 -2
  49. data/lib/amakanize.rb +41 -39
  50. metadata +11 -47
@@ -1,4 +1,6 @@
1
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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<\s*\d+年\s*\d+\s*(?:月|/\d+\s*)号.*>,
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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<\A#{PATTERN_OF_ROLE_NAME}[:/]>, "")
25
- .gsub(%r<[:/]#{PATTERN_OF_ROLE_NAME}\z>, "")
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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(/\([^\(^\)]+?\([^\(]+?\)[^\)^\(]+?\)\z/) do
13
- "(" + $&.gsub(/[\(\)]/, "") + ")"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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
- require "amakanize/filters/base_filter"
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 = begin
11
- if output.match(/#{::Amakanize::PATTERN_OF_VOLUME_PREFIX}(#{PATTERN_OF_NUMERIC_CHARACTERS})/)
12
- ::Regexp.last_match(1)
13
- else
14
- ""
15
- end
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
- require "amakanize/filters/base_filter"
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
- "" => 1,
38
- "" => 2,
39
- "" => 3,
40
- "" => 4,
41
- "" => 5,
42
- "" => 6,
43
- "" => 7,
44
- "" => 8,
45
- "" => 9,
46
- "" => 10,
47
- "十一" => 11,
48
- "十二" => 12,
49
- "十三" => 13,
50
- "十四" => 14,
51
- "十五" => 15,
52
- "十六" => 16,
53
- "十七" => 17,
54
- "十八" => 18,
55
- "十九" => 19,
56
- "二十" => 20,
57
- "二十一" => 21,
58
- "二十二" => 22,
59
- "二十三" => 23,
60
- "二十四" => 24,
61
- "二十五" => 25,
62
- "二十六" => 26,
63
- "二十七" => 27,
64
- "二十八" => 28,
65
- "二十九" => 29,
66
- "三十" => 30,
67
- "三十一" => 31,
68
- "三十二" => 32,
69
- "三十三" => 33,
70
- "三十四" => 34,
71
- "三十五" => 35,
72
- "三十六" => 36,
73
- "三十七" => 37,
74
- "三十八" => 38,
75
- "三十九" => 39,
76
- "四十" => 40,
77
- "四十一" => 41,
78
- "四十二" => 42,
79
- "四十三" => 43,
80
- "四十四" => 44,
81
- "四十五" => 45,
82
- "四十六" => 46,
83
- "四十七" => 47,
84
- "四十八" => 48,
85
- "四十九" => 49,
86
- "五十" => 50,
87
- "五十一" => 51,
88
- "五十二" => 52,
89
- "五十三" => 53,
90
- "五十四" => 54,
91
- "五十五" => 55,
92
- "五十六" => 56,
93
- "五十七" => 57,
94
- "五十八" => 58,
95
- "五十九" => 59,
96
- "六十" => 60,
97
- "六十一" => 61,
98
- "六十二" => 62,
99
- "六十三" => 63,
100
- "六十四" => 64,
101
- "六十五" => 65,
102
- "六十六" => 66,
103
- "六十七" => 67,
104
- "六十八" => 68,
105
- "六十九" => 69,
106
- "七十" => 70,
107
- "七十一" => 71,
108
- "七十二" => 72,
109
- "七十三" => 73,
110
- "七十四" => 74,
111
- "七十五" => 75,
112
- "七十六" => 76,
113
- "七十七" => 77,
114
- "七十八" => 78,
115
- "七十九" => 79,
116
- "八十" => 80,
117
- "八十一" => 81,
118
- "八十二" => 82,
119
- "八十三" => 83,
120
- "八十四" => 84,
121
- "八十五" => 85,
122
- "八十六" => 86,
123
- "八十七" => 87,
124
- "八十八" => 88,
125
- "八十九" => 89,
126
- "九十" => 90,
127
- "九十一" => 91,
128
- "九十二" => 92,
129
- "九十三" => 93,
130
- "九十四" => 94,
131
- "九十五" => 95,
132
- "九十六" => 96,
133
- "九十七" => 97,
134
- "九十八" => 98,
135
- "九十九" => 99,
136
- "" => 1,
137
- "" => 2,
138
- "" => 3,
139
- "" => 4,
140
- "" => 5,
141
- "" => 6,
142
- "" => 7,
143
- "" => 8,
144
- "" => 9,
145
- "" => 10,
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!(key, value.to_s)
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