Class: AnyStyle::Normalizer::Volume
- Inherits:
-
AnyStyle::Normalizer
- Object
- AnyStyle::Normalizer
- AnyStyle::Normalizer::Volume
- Defined in:
- lib/anystyle/normalizer/volume.rb
Instance Attribute Summary
Attributes inherited from AnyStyle::Normalizer
Instance Method Summary collapse
Methods inherited from AnyStyle::Normalizer
#append, #detect_language, #detect_scripts, #doi_extract, #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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/anystyle/normalizer/volume.rb', line 6 def normalize(item, **opts) map_values(item, [:volume]) do |_, volume| volume = StringUtils.strip_html volume unless item.key?(:date) unless volume.sub!(/([12]\d{3});|\(([12]\d{3})\)/, '').nil? append item, :date, $1 || $2 end end case volume when /(?:^|\s)(\p{Lu}?\d+|[IVXLCDM]+)\s?\(([^)]+)\)(\s?\d+\p{Pd}\d+)?/ volume = $1 append item, :issue, $2 append item, :pages, $3.strip unless $3.nil? volume when /(?:(\p{Lu}?\d+|[IVXLCDM]+)[\p{P}\s]+)?(?:nos?|nr|n°|nº|iss?|fasc)\.?\s?(.+)$/i volume = $1 append item, :issue, $2.sub(/\p{P}$/, '') volume when /(\p{Lu}?\d+|[IVXLCDM]+):(\d+(\p{Pd}\d+)?)/ volume = $1 append item, (($3.nil? || item.key?(:pages)) ? :issue : :pages), $2 volume when /(\p{Lu}?\d+|[IVXLCDM]+)[\.\/](\S+)/ volume = $1 append item, :issue, $2.sub(/\p{P}$/, '') volume when /(\d+) [Vv]ol/ $1 else volume .sub(/<\/?(italic|i|strong|b|span|div)>/, '') .sub(/^[\p{P}\s]+/, '') .sub(/^[Vv]ol(ume)?[\p{P}\s]+/, '') .sub(/[\p{P}\p{Z}\p{C}]+$/, '') end end end |