Class: Slk::Support::DateParser

Inherits:
Object
  • Object
show all
Defined in:
lib/slk/support/date_parser.rb

Overview

Parses date strings into timestamps for Slack API queries Supports duration formats (1d, 7d, 1w, 1m) and ISO dates (YYYY-MM-DD)

Constant Summary collapse

DURATION_PATTERN =
/\A(\d+)([dwm])\z/i
ISO_DATE_PATTERN =
/\A\d{4}-\d{2}-\d{2}\z/

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.parse(input) ⇒ Integer

Parse a date string and return a Unix timestamp

Parameters:

  • input (String)

    duration (1d, 7d, 1w, 1m) or ISO date (YYYY-MM-DD)

Returns:

  • (Integer)

    Unix timestamp

Raises:

  • (ArgumentError)

    if format is invalid



17
18
19
# File 'lib/slk/support/date_parser.rb', line 17

def self.parse(input)
  new.parse(input)
end

.to_slack_timestamp(input) ⇒ String

Parse a date string and return a Slack-formatted timestamp (with microseconds)

Parameters:

  • input (String)

    duration or ISO date

Returns:

  • (String)

    Slack timestamp like “1234567890.000000”



24
25
26
# File 'lib/slk/support/date_parser.rb', line 24

def self.to_slack_timestamp(input)
  "#{parse(input)}.000000"
end

Instance Method Details

#parse(input) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/slk/support/date_parser.rb', line 28

def parse(input)
  input = input.to_s.strip

  case input
  when DURATION_PATTERN
    parse_duration(input)
  when ISO_DATE_PATTERN
    parse_iso_date(input)
  else
    raise ArgumentError, "Invalid date format: #{input}. Use duration (1d, 7d, 1w, 1m) or ISO date (YYYY-MM-DD)"
  end
end