class AnyStyle::Normalizer::Date

Public Instance Methods

approximate?(date) click to toggle source
   # File lib/anystyle/normalizer/date.rb
49 def approximate?(date)
50   date =~ /(\b(circa|ca\.|vers|approx))|(^[cv]\.)/i
51 end
extract_day(date) click to toggle source
   # File lib/anystyle/normalizer/date.rb
69 def extract_day(date)
70   if date =~ /\b([012]?\d|3[01])\b/
71     '%02d' % $1.to_i
72   else
73     nil
74   end
75 end
extract_month_by_name(date) click to toggle source
    # File lib/anystyle/normalizer/date.rb
 77 def extract_month_by_name(date)
 78   case date
 79   when /\bjan/i
 80     '01'
 81   when /\bf(eb|év)/i
 82     '02'
 83   when /\bmar/i
 84     '03'
 85   when /\ba[pv]r/i
 86     '04'
 87   when /\bma[yi]/i
 88     '05'
 89   when /\bjui?n/i
 90     '06'
 91   when /\bjui?l/i
 92     '07'
 93   when /\ba(ug|oût)/i
 94     '08'
 95   when /\bsep/i
 96     '09'
 97   when /\bo[ck]t/i
 98     '10'
 99   when /\bnov/i
100     '11'
101   when /\bd[eé]c/i
102     '12'
103   else
104     nil
105   end
106 end
extract_uncertainty(date) click to toggle source
   # File lib/anystyle/normalizer/date.rb
53 def extract_uncertainty(date)
54   if approximate?(date)
55     uncertain?(date) ? '%' : '~'
56   else
57     uncertain?(date) ? '?' : nil
58   end
59 end
extract_year(date) click to toggle source
   # File lib/anystyle/normalizer/date.rb
61 def extract_year(date)
62   if date =~ /\D?([012]\d\d\d)\D?/
63     $1
64   else
65     nil
66   end
67 end
interval?(date) click to toggle source
   # File lib/anystyle/normalizer/date.rb
37 def interval?(date)
38   date =~ /\/|\s\p{Pd}\s|(\s([12]?\d|30)\p{Pd}([12]?\d|3[01])?)/
39 end
iso?(date) click to toggle source
   # File lib/anystyle/normalizer/date.rb
33 def iso?(date)
34   date =~ /[012]\d\d\d-\d\d-\d\d/
35 end
normalize(item, **opts) click to toggle source
   # File lib/anystyle/normalizer/date.rb
 6 def normalize(item, **opts)
 7   map_values(item) do |_, value|
 8     case
 9     when unknown?(value)
10       'XXXX'
11     when interval?(value)
12       value
13     # TODO AD/BC
14     # TODO Seasons
15     when iso?(value)
16       value
17     else
18       year = extract_year(value)
19       unless year.nil?
20         month = extract_month_by_name(value)
21         day = extract_day(value) unless month.nil?
22         [
23           [year, month, day].compact.join('-'),
24           extract_uncertainty(value)
25         ].compact.join('')
26       else
27         value
28       end
29     end
30   end
31 end
uncertain?(date) click to toggle source
   # File lib/anystyle/normalizer/date.rb
45 def uncertain?(date)
46   date =~ /\?/
47 end
unknown?(date) click to toggle source
   # File lib/anystyle/normalizer/date.rb
41 def unknown?(date)
42   date =~ /inconnue|unknown|unbekannt|[ns]\. ?d\b|no date/i
43 end