Sha256: 4f80d5f38b45d6c542df05fd8d978a2e3056326fc56b70e8aeb208d5765221f4
Contents?: true
Size: 1 KB
Versions: 2
Compression:
Stored size: 1 KB
Contents
module Amakanize module Filters class BracketsNormalizationFilter < BaseFilter PAIRS = %w| ‾ ‾ - - ― ― 〜 〜 ‹ › « » ( ) [ ] { } { } 〈 〉 《 》 【 】 〔 〕 〘 〙 〚 〛 \[ \] < > < > ~ ~ |.each_slice(2) # @note Override # @param output [String] e.g. `"IS〈インフィニット・ストラトス〉 1 (オーバーラップ文庫)"` # @return [Hash] e.g. `"IS (インフィニット・ストラトス) 1 (オーバーラップ文庫)"` def call(context:, output:) { context: context, output: PAIRS.each_with_object(output) do |(open, close), result| result.gsub!(/#{open}([^\(]+?)#{close}/, '(\1)') end.gsub(/\s*\((.+?)\)(?:\z|(\s*))/) do " \(#{$1})#{' ' if $2}" end } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
amakanize-0.5.1 | lib/amakanize/filters/brackets_normalization_filter.rb |
amakanize-0.5.0 | lib/amakanize/filters/brackets_normalization_filter.rb |