Module: Bipm::Data::Importer::Text::French
- Defined in:
- lib/bipm/data/importer/text/french.rb
Overview
French-language text utilities shared by every scraping strategy. Single source of truth for month-name translation and date parsing (previously duplicated between Common.extract_date and CGPM.parse_date_text).
Constant Summary collapse
- MONTH_TRANSLATIONS =
{ /janvier/i => "january", /f[eé]vrier/i => "february", /mars/i => "march", /avril/i => "april", /mai/i => "may", /juin/i => "june", /juillet/i => "july", /ao[uû]t/i => "august", /septembre/i => "september", /octobre/i => "october", /novembre/i => "november", /d[ée]cembre/i => "december", }.freeze
- RANGE_SEPARATORS =
/, | to | au | – | — /.freeze
Class Method Summary collapse
Class Method Details
.parse_date(str) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/bipm/data/importer/text/french.rb', line 34 def self.parse_date(str) return nil if str.nil? || str.to_s.strip.empty? translated = translate_months(str.strip.gsub(/\s+/, " ")) last = translated.split(RANGE_SEPARATORS).map(&:strip).reject(&:empty?).last return nil unless last Date.parse(last) rescue Date::Error nil end |
.translate_months(str) ⇒ Object
30 31 32 |
# File 'lib/bipm/data/importer/text/french.rb', line 30 def self.translate_months(str) MONTH_TRANSLATIONS.reduce(str) { |s, (fr, en)| s.gsub(fr, en) } end |