Module: Mpql::DateParser
- Defined in:
- lib/mpql/date_parser.rb
Class Method Summary collapse
-
.parse(input) ⇒ Object
Parse a date string into yyyy-mm-dd format.
Class Method Details
.parse(input) ⇒ Object
Parse a date string into yyyy-mm-dd format.
Supported formats:
- "today" -> today's date
- "yesterday" -> yesterday's date
- "Nd" -> N days ago (e.g., "7d")
- "Nw" -> N weeks ago (e.g., "3w")
- "Nm" -> N months ago (e.g., "1m")
- "yyyy-mm-dd" -> passed through as-is
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/mpql/date_parser.rb', line 18 def parse(input) case input.to_s.strip.downcase when "today" Date.today.strftime("%Y-%m-%d") when "yesterday" (Date.today - 1).strftime("%Y-%m-%d") when /\A(\d+)d\z/ (Date.today - ::Regexp.last_match(1).to_i).strftime("%Y-%m-%d") when /\A(\d+)w\z/ (Date.today - (::Regexp.last_match(1).to_i * 7)).strftime("%Y-%m-%d") when /\A(\d+)m\z/ (Date.today << ::Regexp.last_match(1).to_i).strftime("%Y-%m-%d") when /\A\d{4}-\d{2}-\d{2}\z/ Date.parse(input.strip).strftime("%Y-%m-%d") else raise InputError, "Invalid date format: '#{input}'. Use yyyy-mm-dd, today, yesterday, Nd, Nw, or Nm" end end |