Class: SmartCsvImport::Normalizers::DateConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/smart_csv_import/normalizers/date_converter.rb

Constant Summary collapse

US_DATE =
%r{\A(\d{1,2})/(\d{1,2})/(\d{4})\z}

Instance Method Summary collapse

Instance Method Details

#call(value) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/smart_csv_import/normalizers/date_converter.rb', line 10

def call(value)
  return nil if value.nil?
  return value if value.is_a?(Date)

  str = value.to_s.strip
  return nil if str.empty?

  if (match = str.match(US_DATE))
    month, day, year = match.captures.map(&:to_i)
    Date.new(year, month, day)
  else
    Date.parse(str)
  end
rescue Date::Error, ArgumentError
  nil
end