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 (オーバーラップ文庫)”`.

Parameters:

  • output (String)

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

Returns:

  • (Hash)

    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