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