class DateRange
Constants
- REGEX_PATTERNS
- UNITS
Public Class Methods
parse(string)
click to toggle source
# File lib/daterange.rb, line 7 def self.parse(string) _start, _end = _parse(string) if _start && _end (_start.._end) else nil end end
Private Class Methods
_parse(string)
click to toggle source
# File lib/daterange.rb, line 28 def self._parse(string) case string when REGEX_PATTERNS[:this_unit] unit = REGEX_PATTERNS[:this_unit].match(string)[1] [ now.public_send("beginning_of_#{unit}"), now.public_send("end_of_#{unit}") ] when REGEX_PATTERNS[:this_n_unit] matches = REGEX_PATTERNS[:this_n_unit].match(string) n, unit = matches[1], matches[2] [ (now.public_send("beginning_of_#{unit}") - (Integer(n)-1).public_send(unit)), now.public_send("end_of_#{unit}") ] when REGEX_PATTERNS[:prev_n_unit] matches = REGEX_PATTERNS[:prev_n_unit].match(string) n, unit = matches[1], matches[2] [ now.public_send("beginning_of_#{unit}") - Integer(n).public_send(unit), now.public_send("end_of_#{unit}") - 1.public_send(unit) ] when REGEX_PATTERNS[:prev_unit] unit = REGEX_PATTERNS[:prev_unit].match(string)[1] _parse("previous_1_#{unit}") when 'today' _parse('this_day') when 'yesterday' _parse('previous_day') end end
now()
click to toggle source
# File lib/daterange.rb, line 60 def self.now DateTime.now.utc end