Module: Relaton::Core::DateParser

Defined in:
lib/relaton/core/date_parser.rb

Instance Method Summary collapse

Instance Method Details

#parse_date(date, str: true) ⇒ Date, ...

Returns date.

Parameters:

  • date

  • (defaults to: true)

    return string or Date

Returns:

  • date



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/relaton/core/date_parser.rb', line 7

def parse_date(date, str: true) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength
  return date if date.is_a?(Date)

  case date.to_s
  when /(?<date>\w+\s\d{4})/ # February 2012
    format_date $~[:date], "%B %Y", str, "%Y-%m"
  when /(?<date>\w+\s\d{1,2},\s\d{4})/ # February 11, 2012
    format_date $~[:date], "%B %d, %Y", str, "%Y-%m-%d"
  when /(?<date>\d{4}-\d{1,2}-\d{1,2})/ # 2012-02-03 or 2012-2-3
    format_date $~[:date], "%Y-%m-%d", str
  when /(?<date>\d{4}-\d{1,2})/ # 2012-02 or 2012-2
    format_date $~[:date], "%Y-%m", str
  when /(?<date>\d{4})/ # 2012
    format_date $~[:date], "%Y", str
  end
end