class AnyStyle::Normalizer::Page

Public Instance Methods

normalize(item, **opts) click to toggle source
   # File lib/anystyle/normalizer/page.rb
 6 def normalize(item, **opts)
 7   map_values(item) do |_, value|
 8     pages = case value
 9       when /(\d+)(?:\.(\d+))?(?:\((\d{4})\))?:(\d.*)/
10         # "volume.issue(year):pp"
11         append(item, :volume, $1.to_i)
12         append(item, :issue, $2.to_i) unless $2.nil?
13         append(item, :year, $3.to_i) unless $3.nil?
14         $4
15       else
16         value
17       end
18 
19     # TODO chap. 5, pp. 195-234.
20 
21     pages
22       .gsub(/\p{Pd}+/, '–')
23       .gsub(/[^\d,–]+/, ' ')
24       .strip
25   end
26 end