Class: Amakanize::Filters::BracketsNormalizationFilter

Inherits:
BaseFilter
  • Object
show all
Defined in:
lib/amakanize/filters/brackets_normalization_filter.rb

Constant Summary collapse

PAIRS =
%w|
  ‾ ‾
  - -
  ― ―
  〜 〜
  ‹ ›
  « »
  ( )
  [ ]
  { }
  { }
  〈 〉
  《 》
  【 】
  〔 〕
  〘 〙
  〚 〛
  \[ \]
  < >
  < >
  ~ ~
|.each_slice(2)

Instance Method Summary collapse

Instance Method Details

#call(context:, output:) ⇒ Hash

Note:

Override

Returns e.g. ‘“IS (インフィニット・ストラトス) 1 (オーバーラップ文庫)”`.



32
33
34
35
36
37
38
39
40
41
# File 'lib/amakanize/filters/brackets_normalization_filter.rb', line 32

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
      " \(#{::Regexp.last_match(1)})#{' ' if Regexp.last_match(2)}"
    end
  }
end