Class: AnyStyle::Normalizer::Volume

Inherits:
AnyStyle::Normalizer show all
Defined in:
lib/anystyle/normalizer/volume.rb

Instance Attribute Summary

Attributes inherited from AnyStyle::Normalizer

#keys, #skip

Instance Method Summary collapse

Methods inherited from AnyStyle::Normalizer

#append, #each_value, #initialize, #keys_for, #map_values, #name, #skip?

Constructor Details

This class inherits a constructor from AnyStyle::Normalizer

Instance Method Details

#normalize(item, **opts) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/anystyle/normalizer/volume.rb', line 6

def normalize(item, **opts)
  map_values(item, [:volume]) do |_, volume|
    case volume
    when /(\p{Lu}?\d+)\s?\(([^)]+)\)/
      append item, :issue, $2
      $1
    when /(?:(\p{Lu}?\d+)[\p{P}\s]+)?(?:nos?|nr|n°|nº|iss?)\.?\s?(.+)$/i
      volume = $1
      append item, :issue, $2.sub(/\p{P}$/, '')
      volume
    else
      volume
        .sub(/^[\p{P}\s]+/, '')
        .sub(/.*vol(ume)?[\p{P}\s]+/i, '')
        .sub(/\p{P}$/, '')
    end
  end
end