amakanize 0.6.5 → 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 (51) hide show
  1. checksums.yaml +5 -5
  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/CHANGELOG.md +4 -0
  10. data/Gemfile +7 -1
  11. data/Gemfile.lock +58 -0
  12. data/README.md +2 -4
  13. data/Rakefile +10 -3
  14. data/amakanize.gemspec +13 -15
  15. data/lib/amakanize/author_name.rb +4 -2
  16. data/lib/amakanize/author_names.rb +5 -5
  17. data/lib/amakanize/book_position.rb +4 -2
  18. data/lib/amakanize/filterable.rb +5 -3
  19. data/lib/amakanize/filters/base_filter.rb +2 -0
  20. data/lib/amakanize/filters/book_position_at_end_detection_filter.rb +8 -8
  21. data/lib/amakanize/filters/book_position_clearing_filter.rb +5 -5
  22. data/lib/amakanize/filters/book_position_in_bracket_detection_filter.rb +8 -8
  23. data/lib/amakanize/filters/book_position_in_words_detection_filter.rb +8 -8
  24. data/lib/amakanize/filters/book_position_number_canonicalization_filter.rb +5 -5
  25. data/lib/amakanize/filters/brackets_normalization_filter.rb +4 -2
  26. data/lib/amakanize/filters/continuous_spaces_normalization_filter.rb +4 -2
  27. data/lib/amakanize/filters/dash_between_alphabets_normalization_filter.rb +4 -2
  28. data/lib/amakanize/filters/html_unescape_filter.rb +5 -3
  29. data/lib/amakanize/filters/hyphen_minus_normalization_filter.rb +4 -2
  30. data/lib/amakanize/filters/normalization_filter.rb +4 -3
  31. data/lib/amakanize/filters/obvious_volume_number_deletion_filter.rb +7 -5
  32. data/lib/amakanize/filters/parentheses_deletion_filter.rb +4 -2
  33. data/lib/amakanize/filters/role_name_deletion_filter.rb +9 -7
  34. data/lib/amakanize/filters/space_between_exclamation_and_bracket_deletion_filter.rb +4 -2
  35. data/lib/amakanize/filters/space_deletion_filter.rb +4 -2
  36. data/lib/amakanize/filters/spaces_between_exclamations_deletion_filter.rb +4 -2
  37. data/lib/amakanize/filters/strip_filter.rb +4 -2
  38. data/lib/amakanize/filters/trailing_author_name_payload_deletion_filter.rb +6 -4
  39. data/lib/amakanize/filters/trailing_dash_deletion_filter.rb +6 -4
  40. data/lib/amakanize/filters/trailing_double_parentheses_singlization_filter.rb +6 -4
  41. data/lib/amakanize/filters/trailing_parentheses_deletion_filter.rb +5 -5
  42. data/lib/amakanize/filters/trailing_series_name_payload_deletion_filter.rb +5 -3
  43. data/lib/amakanize/filters/trailing_symbol_deletion_filter.rb +6 -4
  44. data/lib/amakanize/filters/trailing_volume_number_deletion_filter.rb +5 -5
  45. data/lib/amakanize/filters/video_position_detection_filter.rb +10 -9
  46. data/lib/amakanize/filters/video_position_number_conversion_filter.rb +115 -113
  47. data/lib/amakanize/series_name.rb +4 -2
  48. data/lib/amakanize/version.rb +3 -1
  49. data/lib/amakanize/video_position.rb +4 -2
  50. data/lib/amakanize.rb +41 -39
  51. metadata +11 -62
@@ -1,5 +1,7 @@
1
- require "amakanize/filters/base_filter"
2
- require "cgi"
1
+ # frozen_string_literal: true
2
+
3
+ require 'amakanize/filters/base_filter'
4
+ require 'cgi'
3
5
 
4
6
  module Amakanize
5
7
  module Filters
@@ -10,7 +12,7 @@ module Amakanize
10
12
  def call(context:, output:)
11
13
  {
12
14
  context: context,
13
- output: ::CGI.unescapeHTML(output),
15
+ output: ::CGI.unescapeHTML(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
@@ -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,5 +1,6 @@
1
- require "active_support"
2
- require "amakanize/filters/base_filter"
1
+ # frozen_string_literal: true
2
+
3
+ require 'amakanize/filters/base_filter'
3
4
 
4
5
  module Amakanize
5
6
  module Filters
@@ -10,7 +11,7 @@ module Amakanize
10
11
  def call(context:, output:)
11
12
  {
12
13
  context: context,
13
- output: ::ActiveSupport::Multibyte::Unicode.normalize(output),
14
+ output: output.unicode_normalize(:nfkc)
14
15
  }
15
16
  end
16
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