amakanize 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -36
  3. data/README.md +35 -8
  4. data/lib/amakanize.rb +23 -1
  5. data/lib/amakanize/author_name.rb +2 -0
  6. data/lib/amakanize/author_names.rb +2 -0
  7. data/lib/amakanize/book_position.rb +33 -0
  8. data/lib/amakanize/filters/book_position_at_end_detection_filter.rb +29 -0
  9. data/lib/amakanize/filters/book_position_clearing_filter.rb +18 -0
  10. data/lib/amakanize/filters/book_position_in_bracket_detection_filter.rb +29 -0
  11. data/lib/amakanize/filters/book_position_in_words_detection_filter.rb +26 -0
  12. data/lib/amakanize/filters/book_position_number_canonicalization_filter.rb +18 -0
  13. data/lib/amakanize/filters/brackets_normalization_filter.rb +3 -1
  14. data/lib/amakanize/filters/continuous_spaces_normalization_filter.rb +3 -1
  15. data/lib/amakanize/filters/dash_between_alphabets_normalization_filter.rb +3 -1
  16. data/lib/amakanize/filters/html_unescape_filter.rb +2 -1
  17. data/lib/amakanize/filters/hyphen_minus_normalization_filter.rb +3 -1
  18. data/lib/amakanize/filters/normalization_filter.rb +2 -1
  19. data/lib/amakanize/filters/obvious_volume_number_deletion_filter.rb +3 -1
  20. data/lib/amakanize/filters/parentheses_deletion_filter.rb +3 -1
  21. data/lib/amakanize/filters/role_name_deletion_filter.rb +3 -1
  22. data/lib/amakanize/filters/space_between_exclamation_and_bracket_deletion_filter.rb +3 -1
  23. data/lib/amakanize/filters/space_deletion_filter.rb +3 -1
  24. data/lib/amakanize/filters/spaces_between_exclamations_deletion_filter.rb +3 -1
  25. data/lib/amakanize/filters/strip_filter.rb +3 -1
  26. data/lib/amakanize/filters/trailing_author_name_payload_deletion_filter.rb +3 -1
  27. data/lib/amakanize/filters/trailing_dash_deletion_filter.rb +3 -1
  28. data/lib/amakanize/filters/trailing_double_parentheses_singlization_filter.rb +3 -1
  29. data/lib/amakanize/filters/trailing_parentheses_deletion_filter.rb +3 -1
  30. data/lib/amakanize/filters/trailing_series_name_payload_deletion_filter.rb +3 -1
  31. data/lib/amakanize/filters/trailing_volume_number_deletion_filter.rb +3 -1
  32. data/lib/amakanize/filters/video_position_detection_filter.rb +3 -1
  33. data/lib/amakanize/filters/video_position_number_conversion_filter.rb +112 -110
  34. data/lib/amakanize/series_name.rb +2 -0
  35. data/lib/amakanize/version.rb +1 -1
  36. data/lib/amakanize/video_position.rb +2 -0
  37. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 426275ccb0772fe3bde1320c987661f2a866e595
4
- data.tar.gz: 811b25a7e84aba958189d436a9fdde4f86bf19f0
3
+ metadata.gz: 74e0311ca23b89b645e0629caa871060fd4f2796
4
+ data.tar.gz: fe9047de846deaccabf42d2b6cc9eba7d809d7c4
5
5
  SHA512:
6
- metadata.gz: dcaf9a69a83a7821c503bb3604a970022f3f90d1a12cb0ee913bdf80c7d285f3eb6a3acfd8f80c1831f5c27c83ade1393d6b3a8e1674fb7219947ddd1d1fb563
7
- data.tar.gz: c37ce03bbc454bf50365730bb72051d92e93843536f290f925238123720cca911724ecd2d67436cb7784dd0c9dd06002054e88baeb3d3837a5d1941a76d45389
6
+ metadata.gz: 898701f616daac7e977173f3794a51ed11d63ad7558303626255badaa6d72fe04bbfcb5f9a34f8199936e242ca715a93f1b46c7aebf628149a069beea80fa7bf
7
+ data.tar.gz: d776540d85acc6bce04afa16c4bacde2480c346dcf6f0267333bbaaf9a8ce3f2f6d6cad001c48c20cd60193e5cb139463b10086ec14d864af588a69cd1354db4
@@ -1,154 +1,159 @@
1
- ## 0.6.0
1
+ ## v0.6.1
2
+
3
+ - Add `Amakanize::BookPosition`
4
+ - Reject empty author names on `Amakanize::AuthorNames`
5
+
6
+ ## v0.6.0
2
7
 
3
8
  - Add `Amakanize::VideoPosition`
4
9
  - Rename author name from "r7kamura" to "Ryo Nakamura"
5
10
  - Set required Ruby version to 2.2.2 or higher for ActiveSupport
6
11
 
7
- ## 0.5.3
12
+ ## v0.5.3
8
13
 
9
14
  - Support weekly magazine format in series detection
10
15
 
11
- ## 0.5.2
16
+ ## v0.5.2
12
17
 
13
18
  - Support nested parentheses
14
19
 
15
- ## 0.5.1
20
+ ## v0.5.1
16
21
 
17
22
  - Detect アフタヌーン from アフタヌーン 2016年 05 月号
18
23
 
19
- ## 0.5.0
24
+ ## v0.5.0
20
25
 
21
26
  - Remove volume number only one time
22
27
  - Normalize continuous spaces
23
28
 
24
- ## 0.4.9
29
+ ## v0.4.9
25
30
 
26
31
  - Fix a bug in the brackets normalization logic
27
32
 
28
- ## 0.4.8
33
+ ## v0.4.8
29
34
 
30
35
  - Treat カバーデザイン as role name
31
36
 
32
- ## 0.4.7
37
+ ## v0.4.7
33
38
 
34
39
  - Support "Buso Renkin, Vol. 5"
35
40
 
36
- ## 0.4.6
41
+ ## v0.4.6
37
42
 
38
43
  - Treat (キャラクター原案)ハラカズヒロ as ハラカズヒロ
39
44
  - Normalize 「x! 」 into 「x!」
40
45
 
41
- ## 0.4.5
46
+ ## v0.4.5
42
47
 
43
48
  - Support 2016年04月号 for magazines
44
49
 
45
- ## 0.4.4
50
+ ## v0.4.4
46
51
 
47
52
  - Support (前) (後) (上) (中) (下)
48
53
 
49
- ## 0.4.3
54
+ ## v0.4.3
50
55
 
51
56
  - Support (原作・イラスト)XXX
52
57
  - Support イラスト:XXX
53
58
 
54
- ## 0.4.2
59
+ ## v0.4.2
55
60
 
56
61
  - Support #5
57
62
 
58
- ## 0.4.1
63
+ ## v0.4.1
59
64
 
60
65
  - Support Vol.3
61
66
  - Support 3 通常版
62
67
  - Support 7.5
63
68
 
64
- ## 0.4.0
69
+ ## v0.4.0
65
70
 
66
71
  - Add spaces around brackets except for ending
67
72
  - Treat `―XXX―` as brackets (e.g. To LOVEる―とらぶる―)
68
73
 
69
- ## 0.3.0
74
+ ## v0.3.0
70
75
 
71
76
  - Normalize all brackets into round brackets (parentheses)
72
77
  - Removes only trailing brackets
73
78
 
74
- ## 0.2.2
79
+ ## v0.2.2
75
80
 
76
81
  - Support volume N
77
82
 
78
- ## 0.2.1
83
+ ## v0.2.1
79
84
 
80
85
  - Normalize angle brackets
81
86
  - Remove trailing LvN and Lv.N as volume number
82
87
  - Fix volume number detection pattern
83
88
 
84
- ## 0.2.0
89
+ ## v0.2.0
85
90
 
86
91
  - Fix author name separator
87
92
 
88
- ## 0.1.12
93
+ ## v0.1.12
89
94
 
90
95
  - Support 第N版
91
96
 
92
- ## 0.1.11
97
+ ## v0.1.11
93
98
 
94
99
  - Improve volume detection for アニウッド大通り
95
100
 
96
- ## 0.1.10
101
+ ## v0.1.10
97
102
 
98
103
  - Detect obvious volume number in product title
99
104
 
100
- ## 0.1.9
105
+ ## v0.1.9
101
106
 
102
107
  - Normalize hyphen with hyphen/minus
103
108
 
104
- ## 0.1.8
109
+ ## v0.1.8
105
110
 
106
111
  - Normalize hyphen between alphabets in series name
107
112
 
108
- ## 0.1.7
113
+ ## v0.1.7
109
114
 
110
115
  - Remove trailing surrounding hyphens and payload on series name
111
116
 
112
- ## 0.1.6
117
+ ## v0.1.6
113
118
 
114
119
  - Remove trailing dash and payload on series name
115
120
 
116
- ## 0.1.5
121
+ ## v0.1.5
117
122
 
118
123
  - Remove spaces between exclamations for 「ばくおん! !」
119
124
 
120
- ## 0.1.4
125
+ ## v0.1.4
121
126
 
122
127
  - Add more author name separator
123
128
  - Remove suffix role name
124
129
 
125
- ## 0.1.3
130
+ ## v0.1.3
126
131
 
127
132
  - Remove trailing 原作・原案・漫画 of author name
128
133
 
129
- ## 0.1.2
134
+ ## v0.1.2
130
135
 
131
136
  - Add AuthorNames class
132
137
 
133
- ## 0.1.1
138
+ ## v0.1.1
134
139
 
135
140
  - Support x and X as roman numeric
136
141
 
137
- ## 0.1.0
142
+ ## v0.1.0
138
143
 
139
144
  - Support roman numerals on series name
140
145
  - Support 第N巻 on series name
141
146
  - Normalize series name
142
147
 
143
- ## 0.0.4
148
+ ## v0.0.4
144
149
 
145
150
  - Normalize all characters
146
151
 
147
- ## 0.0.3
152
+ ## v0.0.3
148
153
 
149
154
  - Remove space from author name
150
155
 
151
- ## 0.0.2
156
+ ## v0.0.2
152
157
 
153
158
  - Remove parentheses of numericals in author name
154
159
  - Remove role name from author name
@@ -156,6 +161,6 @@
156
161
  - Strip author name
157
162
  - Unescape HTML in author name
158
163
 
159
- ## 0.0.1
164
+ ## v0.0.1
160
165
 
161
166
  - 1st release :tada:
data/README.md CHANGED
@@ -4,11 +4,7 @@
4
4
  [![Gem Version](https://badge.fury.io/rb/amakanize.svg)](https://rubygems.org/gems/amakanize)
5
5
  [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/github/amakan/amakanize)
6
6
 
7
- Utilities to canonicalize series names and author names for [amakan.net](https://amakan.net/).
8
-
9
- ## Requirements
10
-
11
- - Ruby 2.2.2 or higher
7
+ Utilities to canonicalize names for [amakan.net](https://amakan.net/).
12
8
 
13
9
  ## Installation
14
10
 
@@ -20,30 +16,61 @@ gem "amakanize"
20
16
 
21
17
  And then execute:
22
18
 
23
- ```sh
19
+ ```bash
24
20
  bundle
25
21
  ```
26
22
 
27
23
  Or manually install:
28
24
 
29
- ```sh
25
+ ```bash
30
26
  gem install amakanize
31
27
  ```
32
28
 
33
29
  ## Usage
34
30
 
35
- ```rb
31
+ Require `"amakanize"` before using classes below.
32
+
33
+ ```ruby
36
34
  require "amakanize"
35
+ ```
36
+
37
+ ### Amakanize::AuthorName
37
38
 
39
+ ```ruby
38
40
  Amakanize::AuthorName.new("ぽんかん(8)").to_s #=> "ぽんかん8"
39
41
  Amakanize::AuthorName.new("ぽんかん8").to_s #=> "ぽんかん8"
40
42
  Amakanize::AuthorName.new("ぽんかん⑧").to_s #=> "ぽんかん8"
43
+ ```
44
+
45
+ ### Amakanize::AuthorNames
41
46
 
47
+ ```ruby
42
48
  Amakanize::AuthorNames.new("ぽんかん⑧,渡 航").map(&:to_s) #=> ["ぽんかん8", "渡航"]
43
49
  Amakanize::AuthorNames.new("ぽんかん⑧,渡 航").map(&:to_s) #=> ["ぽんかん8", "渡航"]
44
50
  Amakanize::AuthorNames.new("ぽんかん⑧、渡 航").map(&:to_s) #=> ["ぽんかん8", "渡航"]
51
+ ```
45
52
 
53
+ ### Amakanize::BookPosition
54
+
55
+ ```ruby
56
+ Amakanize::BookPosition.new("Fate/Grand Order 電撃コミックアンソロジー (2) (電撃コミックスNEXT)").to_s #=> "2"
57
+ Amakanize::BookPosition.new("お迎えです。 6 (花とゆめCOMICS)").to_s #=> "6"
58
+ Amakanize::BookPosition.new("こいつら100%伝説 上 (集英社文庫 お 34-5)").to_s #=> "上"
59
+ Amakanize::BookPosition.new("THE BEST STAGE ガールフレンド(♪) ~Side MOMOKO~ (電撃コミックスEX)").to_s #=> ""
60
+ ```
61
+
62
+ ### Amakanize::SeriesName
63
+
64
+ ```ruby
46
65
  Amakanize::SeriesName.new("やはり俺の青春ラブコメはまちがっている。4").to_s #=> "やはり俺の青春ラブコメはまちがっている。"
47
66
  Amakanize::SeriesName.new("ラブライブ! School idol diary ~星空凛~").to_s #=> "ラブライブ! School idol diary"
48
67
  Amakanize::SeriesName.new("僕だけがいない街 (1) (カドカワコミックス・エース)").to_s #=> "僕だけがいない街"
49
68
  ```
69
+
70
+ ### Amakanize::VideoPosition
71
+
72
+ ```ruby
73
+ Amakanize::VideoPosition.new("第1話 ソードアート・オンラインII").to_s #=> "1"
74
+ Amakanize::VideoPosition.new("デジモンアドベンチャー tri. 第2章「決意」").to_s #=> "2"
75
+ Amakanize::VideoPosition.new("楽園追放-Expelled from Paradise-").to_s #=> ""
76
+ ```
@@ -22,6 +22,22 @@ module Amakanize
22
22
  |後
23
23
  /x
24
24
 
25
+ PATTERN_OF_PREFIX_OF_BOOK_POSITION = /
26
+ \#\s*
27
+ |episode\.?\s*
28
+ |lv\.?\s*
29
+ |level\.?\s*
30
+ |vol(?:ume)?\.?\s*
31
+ |巻(?:の|ノ|之)?\s*
32
+ |第\s*
33
+ /ix
34
+
35
+ PATTERN_OF_SUFFIX_OF_BOOK_POSITION = /
36
+ \s*話
37
+ |\s*巻
38
+ |\s*版
39
+ /x
40
+
25
41
  PATTERN_OF_VOLUME_PREFIX = /
26
42
  episode\.?\s*
27
43
  |\#
@@ -34,10 +50,16 @@ module Amakanize
34
50
  /x
35
51
  end
36
52
 
37
- require "amakanize/filterable"
38
53
  require "amakanize/author_name"
39
54
  require "amakanize/author_names"
55
+ require "amakanize/book_position"
56
+ require "amakanize/filterable"
40
57
  require "amakanize/filters/base_filter"
58
+ require "amakanize/filters/book_position_at_end_detection_filter"
59
+ require "amakanize/filters/book_position_clearing_filter"
60
+ require "amakanize/filters/book_position_in_bracket_detection_filter"
61
+ require "amakanize/filters/book_position_in_words_detection_filter"
62
+ require "amakanize/filters/book_position_number_canonicalization_filter"
41
63
  require "amakanize/filters/brackets_normalization_filter"
42
64
  require "amakanize/filters/continuous_spaces_normalization_filter"
43
65
  require "amakanize/filters/dash_between_alphabets_normalization_filter"
@@ -1,3 +1,5 @@
1
+ require "amakanize/filterable"
2
+
1
3
  module Amakanize
2
4
  class AuthorName
3
5
  include ::Amakanize::Filterable
@@ -27,6 +27,8 @@ module Amakanize
27
27
  def author_names
28
28
  segments.map do |segment|
29
29
  ::Amakanize::AuthorName.new(segment)
30
+ end.reject do |author_name|
31
+ author_name.to_s.empty?
30
32
  end
31
33
  end
32
34
 
@@ -0,0 +1,33 @@
1
+ require "amakanize/filterable"
2
+
3
+ module Amakanize
4
+ class BookPosition
5
+ include ::Amakanize::Filterable
6
+
7
+ class << self
8
+ # @return [Array<Class>]
9
+ def filter_classes
10
+ @filter_classes ||= [
11
+ ::Amakanize::Filters::HtmlUnescapeFilter,
12
+ ::Amakanize::Filters::NormalizationFilter,
13
+ ::Amakanize::Filters::ContinuousSpacesNormalizationFilter,
14
+ ::Amakanize::Filters::HyphenMinusNormalizationFilter,
15
+ ::Amakanize::Filters::DashBetweenAlhabetsNormalizationFilter,
16
+ ::Amakanize::Filters::BracketsNormalizationFilter,
17
+ ::Amakanize::Filters::SpacesBetweenExclamationsDeletionFilter,
18
+ ::Amakanize::Filters::SpaceBetweenExclamationAndBracketDeletionFilter,
19
+ ::Amakanize::Filters::BookPositionInBracketDetectionFilter,
20
+ ::Amakanize::Filters::TrailingDoubleParenthesesSinglizationFilter,
21
+ ::Amakanize::Filters::TrailingParenthesesDeletionFilter,
22
+ ::Amakanize::Filters::TrailingDashDeletionFilter,
23
+ ::Amakanize::Filters::TrailingSeriesNamePayloadDeletionFilter,
24
+ ::Amakanize::Filters::BookPositionInWordsDetectionFilter,
25
+ ::Amakanize::Filters::BookPositionAtEndDetectionFilter,
26
+ ::Amakanize::Filters::BookPositionClearingFilter,
27
+ ::Amakanize::Filters::VideoPositionNumberConversionFilter,
28
+ ::Amakanize::Filters::BookPositionNumberCanonicalizationFilter,
29
+ ]
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,29 @@
1
+ require "amakanize/filters/base_filter"
2
+
3
+ module Amakanize
4
+ module Filters
5
+ class BookPositionAtEndDetectionFilter < ::Amakanize::Filters::BaseFilter
6
+ PATTERN = /
7
+ (?:#{::Amakanize::PATTERN_OF_PREFIX_OF_BOOK_POSITION})?
8
+ (#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS})
9
+ (?:#{::Amakanize::PATTERN_OF_SUFFIX_OF_BOOK_POSITION})?
10
+ \s*
11
+ \z
12
+ /x
13
+
14
+ # @note Override
15
+ def call(context:, output:)
16
+ unless context[:position_detected]
17
+ if position = output[PATTERN, 1]
18
+ context[:position_detected] = true
19
+ output = position
20
+ end
21
+ end
22
+ {
23
+ context: context,
24
+ output: output,
25
+ }
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,18 @@
1
+ require "amakanize/filters/base_filter"
2
+
3
+ module Amakanize
4
+ module Filters
5
+ class BookPositionClearingFilter < ::Amakanize::Filters::BaseFilter
6
+ # @note Override
7
+ def call(context:, output:)
8
+ unless context[:position_detected]
9
+ output = ""
10
+ end
11
+ {
12
+ context: context,
13
+ output: output,
14
+ }
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,29 @@
1
+ require "amakanize/filters/base_filter"
2
+
3
+ module Amakanize
4
+ module Filters
5
+ class BookPositionInBracketDetectionFilter < ::Amakanize::Filters::BaseFilter
6
+ PATTERN = /
7
+ \(
8
+ (?:#{::Amakanize::PATTERN_OF_PREFIX_OF_BOOK_POSITION})?
9
+ (#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS})
10
+ (?:#{::Amakanize::PATTERN_OF_SUFFIX_OF_BOOK_POSITION})?
11
+ \)
12
+ /x
13
+
14
+ # @note Override
15
+ def call(context:, output:)
16
+ unless context[:position_detected]
17
+ if position = output[PATTERN, 1]
18
+ context[:position_detected] = true
19
+ output = position
20
+ end
21
+ end
22
+ {
23
+ context: context,
24
+ output: output,
25
+ }
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,26 @@
1
+ require "amakanize/filters/base_filter"
2
+
3
+ module Amakanize
4
+ module Filters
5
+ class BookPositionInWordsDetectionFilter < ::Amakanize::Filters::BaseFilter
6
+ PATTERN = /
7
+ (?:#{::Amakanize::PATTERN_OF_PREFIX_OF_BOOK_POSITION})(#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS})
8
+ |(#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS})(?:#{::Amakanize::PATTERN_OF_SUFFIX_OF_BOOK_POSITION})
9
+ /x
10
+
11
+ # @note Override
12
+ def call(context:, output:)
13
+ unless context[:position_detected]
14
+ if position = output[PATTERN, 1]
15
+ context[:position_detected] = true
16
+ output = position
17
+ end
18
+ end
19
+ {
20
+ context: context,
21
+ output: output,
22
+ }
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ require "amakanize/filters/base_filter"
2
+
3
+ module Amakanize
4
+ module Filters
5
+ class BookPositionNumberCanonicalizationFilter < ::Amakanize::Filters::BaseFilter
6
+ # @note Override
7
+ def call(context:, output:)
8
+ if context[:position_detected]
9
+ output = output.gsub(/\A0+([1-9]+)/, '\1')
10
+ end
11
+ {
12
+ context: context,
13
+ output: output,
14
+ }
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class BracketsNormalizationFilter < BaseFilter
5
+ class BracketsNormalizationFilter < ::Amakanize::Filters::BaseFilter
4
6
  PAIRS = %w|
5
7
  ‾ ‾
6
8
  - -
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class ContinuousSpacesNormalizationFilter < BaseFilter
5
+ class ContinuousSpacesNormalizationFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"ウメハラ FIGHTING GAMERS!"`
6
8
  # @return [Hash] e.g. `"ウメハラ FIGHTING GAMERS!"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class DashBetweenAlhabetsNormalizationFilter < BaseFilter
5
+ class DashBetweenAlhabetsNormalizationFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"D.Grayーman"`
6
8
  # @return [Hash] e.g. `"D.Gray-man"`
@@ -1,8 +1,9 @@
1
+ require "amakanize/filters/base_filter"
1
2
  require "cgi"
2
3
 
3
4
  module Amakanize
4
5
  module Filters
5
- class HtmlUnescapeFilter < BaseFilter
6
+ class HtmlUnescapeFilter < ::Amakanize::Filters::BaseFilter
6
7
  # @note Override
7
8
  # @param output [String] e.g. `"&lt;ハノカゲ&gt;"`
8
9
  # @return [Hash] e.g. `"ハノカゲ"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class HyphenMinusNormalizationFilter < BaseFilter
5
+ class HyphenMinusNormalizationFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @note Replace U+2010 (hyphen) with U+002D (hyphen/minus)
6
8
  # @param output [String] e.g. `"D.Gray‐man"`
@@ -1,8 +1,9 @@
1
1
  require "active_support"
2
+ require "amakanize/filters/base_filter"
2
3
 
3
4
  module Amakanize
4
5
  module Filters
5
- class NormalizationFilter < BaseFilter
6
+ class NormalizationFilter < ::Amakanize::Filters::BaseFilter
6
7
  # @note Override
7
8
  # @param output [String] e.g. `"ぽんかん(8)"`, `"ぽんかん⑧"`
8
9
  # @return [Hash] e.g. `"ぽんかん(8)"`, `"ぽんかん8"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class ObviousVolumeNumberDeletionFilter < BaseFilter
5
+ class ObviousVolumeNumberDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  PATTERN = Regexp.union(
5
7
  /\s*#{::Amakanize::PATTERN_OF_VOLUME_PREFIX}?#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}(?:話|巻|版).*/,
6
8
  /\s+#{::Amakanize::PATTERN_OF_VOLUME_PREFIX}?#{::Amakanize::PATTERN_OF_NUMERIC_CHARACTERS}(?:話|巻|版)?:\s+.*/,
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class ParenthesesDeletionFilter < BaseFilter
5
+ class ParenthesesDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"ぽんかん(8)"`
6
8
  # @return [Hash] e.g. `"ぽんかん8"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class RoleNameDeletionFilter < BaseFilter
5
+ class RoleNameDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  PATTERN_OF_ROLE_NAME = ::Regexp.union(
5
7
  %w(
6
8
  イラスト
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class SpaceBetweenExclamationAndBracketDeletionFilter < BaseFilter
5
+ class SpaceBetweenExclamationAndBracketDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"まおゆう魔王勇者 「この我のものとなれ、勇者よ」「断る! 」"`
6
8
  # @return [Hash] e.g. `"まおゆう魔王勇者 「この我のものとなれ、勇者よ」「断る!」"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class SpaceDeletionFilter < BaseFilter
5
+ class SpaceDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"渡 航"`
6
8
  # @return [Hash] e.g. `"渡航"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class SpacesBetweenExclamationsDeletionFilter < BaseFilter
5
+ class SpacesBetweenExclamationsDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"ばくおん! !"`
6
8
  # @return [Hash] e.g. `"ばくおん!!"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class StripFilter < BaseFilter
5
+ class StripFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"  ハノカゲ  "`
6
8
  # @return [Hash] e.g. `"ハノカゲ"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class TrailingAuthorNamePayloadDeletionFilter < BaseFilter
5
+ class TrailingAuthorNamePayloadDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  PAYLOADS = %w(
5
7
  その他
6
8
  ほか
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class TrailingDashDeletionFilter < BaseFilter
5
+ class TrailingDashDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  TOKENS = %w(
5
7
  ̃
6
8
  ̰
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class TrailingDoubleParenthesesSinglizationFilter < BaseFilter
5
+ class TrailingDoubleParenthesesSinglizationFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"ヒナまつり 11 (ヒナまつり) (ビームコミックス(ハルタ) )"`
6
8
  # @return [Hash] e.g. `"ヒナまつり 11 (ヒナまつり) (ビームコミックスハルタ )"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class TrailingParenthesesDeletionFilter < BaseFilter
5
+ class TrailingParenthesesDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"魔法使いの嫁 通常版 4 (BLADE COMICS)"`
6
8
  # @return [Hash] e.g. `"魔法使いの嫁 通常版 4"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class TrailingSeriesNamePayloadDeletionFilter < BaseFilter
5
+ class TrailingSeriesNamePayloadDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  PAYLOADS = %w(
5
7
  通常版
6
8
  (未分類)
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class TrailingVolumeNumberDeletionFilter < BaseFilter
5
+ class TrailingVolumeNumberDeletionFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"やはり俺の青春ラブコメはまちがっている。4"`, `"ネトゲの嫁は女の子じゃないと思った? Lv.2"`
6
8
  # @return [Hash] e.g. `"やはり俺の青春ラブコメはまちがっている。"`, `"ネトゲの嫁は女の子じゃないと思った?"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class VideoPositionDetectionFilter < BaseFilter
5
+ class VideoPositionDetectionFilter < ::Amakanize::Filters::BaseFilter
4
6
  # @note Override
5
7
  # @param output [String] e.g. `"第1話「でじこだにょ」/第2話「ぷちこと一緒かにょ?」"`
6
8
  # @return [Hash] e.g. `"1"`
@@ -1,6 +1,8 @@
1
+ require "amakanize/filters/base_filter"
2
+
1
3
  module Amakanize
2
4
  module Filters
3
- class VideoPositionNumberConversionFilter < BaseFilter
5
+ class VideoPositionNumberConversionFilter < ::Amakanize::Filters::BaseFilter
4
6
  TABLE = {
5
7
  /i/i => 1,
6
8
  /ii/i => 2,
@@ -32,115 +34,115 @@ module Amakanize
32
34
  /xxviii/i => 28,
33
35
  /xxix/i => 29,
34
36
  /xxx/i => 30,
35
- /一/ => 1,
36
- /二/ => 2,
37
- /三/ => 3,
38
- /四/ => 4,
39
- /五/ => 5,
40
- /六/ => 6,
41
- /七/ => 7,
42
- /八/ => 8,
43
- /九/ => 9,
44
- /十/ => 10,
45
- /十一/ => 11,
46
- /十二/ => 12,
47
- /十三/ => 13,
48
- /十四/ => 14,
49
- /十五/ => 15,
50
- /十六/ => 16,
51
- /十七/ => 17,
52
- /十八/ => 18,
53
- /十九/ => 19,
54
- /二十/ => 20,
55
- /二十一/ => 21,
56
- /二十二/ => 22,
57
- /二十三/ => 23,
58
- /二十四/ => 24,
59
- /二十五/ => 25,
60
- /二十六/ => 26,
61
- /二十七/ => 27,
62
- /二十八/ => 28,
63
- /二十九/ => 29,
64
- /三十/ => 30,
65
- /三十一/ => 31,
66
- /三十二/ => 32,
67
- /三十三/ => 33,
68
- /三十四/ => 34,
69
- /三十五/ => 35,
70
- /三十六/ => 36,
71
- /三十七/ => 37,
72
- /三十八/ => 38,
73
- /三十九/ => 39,
74
- /四十/ => 40,
75
- /四十一/ => 41,
76
- /四十二/ => 42,
77
- /四十三/ => 43,
78
- /四十四/ => 44,
79
- /四十五/ => 45,
80
- /四十六/ => 46,
81
- /四十七/ => 47,
82
- /四十八/ => 48,
83
- /四十九/ => 49,
84
- /五十/ => 50,
85
- /五十一/ => 51,
86
- /五十二/ => 52,
87
- /五十三/ => 53,
88
- /五十四/ => 54,
89
- /五十五/ => 55,
90
- /五十六/ => 56,
91
- /五十七/ => 57,
92
- /五十八/ => 58,
93
- /五十九/ => 59,
94
- /六十/ => 60,
95
- /六十一/ => 61,
96
- /六十二/ => 62,
97
- /六十三/ => 63,
98
- /六十四/ => 64,
99
- /六十五/ => 65,
100
- /六十六/ => 66,
101
- /六十七/ => 67,
102
- /六十八/ => 68,
103
- /六十九/ => 69,
104
- /七十/ => 70,
105
- /七十一/ => 71,
106
- /七十二/ => 72,
107
- /七十三/ => 73,
108
- /七十四/ => 74,
109
- /七十五/ => 75,
110
- /七十六/ => 76,
111
- /七十七/ => 77,
112
- /七十八/ => 78,
113
- /七十九/ => 79,
114
- /八十/ => 80,
115
- /八十一/ => 81,
116
- /八十二/ => 82,
117
- /八十三/ => 83,
118
- /八十四/ => 84,
119
- /八十五/ => 85,
120
- /八十六/ => 86,
121
- /八十七/ => 87,
122
- /八十八/ => 88,
123
- /八十九/ => 89,
124
- /九十/ => 90,
125
- /九十一/ => 91,
126
- /九十二/ => 92,
127
- /九十三/ => 93,
128
- /九十四/ => 94,
129
- /九十五/ => 95,
130
- /九十六/ => 96,
131
- /九十七/ => 97,
132
- /九十八/ => 98,
133
- /九十九/ => 99,
134
- /①/ => 1,
135
- /②/ => 2,
136
- /③/ => 3,
137
- /④/ => 4,
138
- /⑤/ => 5,
139
- /⑥/ => 6,
140
- /⑦/ => 7,
141
- /⑧/ => 8,
142
- /⑨/ => 9,
143
- /⑩/ => 10,
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,
144
146
  }
145
147
 
146
148
  # @note Override
@@ -1,3 +1,5 @@
1
+ require "amakanize/filterable"
2
+
1
3
  module Amakanize
2
4
  class SeriesName
3
5
  include ::Amakanize::Filterable
@@ -1,3 +1,3 @@
1
1
  module Amakanize
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -1,3 +1,5 @@
1
+ require "amakanize/filterable"
2
+
1
3
  module Amakanize
2
4
  class VideoPosition
3
5
  include ::Amakanize::Filterable
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amakanize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-10 00:00:00.000000000 Z
11
+ date: 2017-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -99,8 +99,14 @@ files:
99
99
  - lib/amakanize.rb
100
100
  - lib/amakanize/author_name.rb
101
101
  - lib/amakanize/author_names.rb
102
+ - lib/amakanize/book_position.rb
102
103
  - lib/amakanize/filterable.rb
103
104
  - lib/amakanize/filters/base_filter.rb
105
+ - lib/amakanize/filters/book_position_at_end_detection_filter.rb
106
+ - lib/amakanize/filters/book_position_clearing_filter.rb
107
+ - lib/amakanize/filters/book_position_in_bracket_detection_filter.rb
108
+ - lib/amakanize/filters/book_position_in_words_detection_filter.rb
109
+ - lib/amakanize/filters/book_position_number_canonicalization_filter.rb
104
110
  - lib/amakanize/filters/brackets_normalization_filter.rb
105
111
  - lib/amakanize/filters/continuous_spaces_normalization_filter.rb
106
112
  - lib/amakanize/filters/dash_between_alphabets_normalization_filter.rb