module DatePeriodParser
Constants
- DEFAULT_OFFSET
- VERSION
Public Class Methods
Returns array of start and end DateTime of given period string.
@example Basic useage
DatePeriodParser.parse("2014") # => [ # #<DateTime 2014-01-01T00:00:00.000+0000">, # #<DateTime 2014-12-31T23:59:59.999+0000"> # ]
@example with timezone offsets:
from,until = DatePeriodParser.parse("2014", offset: "+0700") from # => #<DateTime 2014-01-01T00:00:00.000+0700"> until # => #<DateTime 2014-12-31T23:59:59.999+0700">
@example invalid periods
DatePeriodParser.parse("123213") # => nil from,until = DatePeriodParser.parse("123213") from # => nil until # => nil
@param [String] period date period string. @option options [String] :offset (“+0000”) timezone offset, e.g. “+0700” @option options [String] :default (nil) use this default if `period` is nil @return [Array<DateTime, DateTime>] start and end DateTime @return [nil] if period string is invalid
# File lib/date_period_parser.rb, line 34 def parse(period, options = {}) parse!(period, options) rescue ArgumentError => e nil end
Same as parse
but raises an ArgumentError if period string is invalid
@example Basic useage
def my_method from,until = DatePeriodParser.parse!("FOOBAR") rescue ArgumentError => e # do something end
@see parse
@param [String] period date period string. @raise [ArgumentError] if period string is invalid @option options [String] :offset (“+0000”) timezone offset, e.g. “+0700” @option options [String] :default (nil) use this default if `period` is nil @return [Array<DateTime, DateTime>] start and end DateTime
# File lib/date_period_parser.rb, line 56 def parse!(period, options = {}) period = options[:default] if period.nil? || period.empty? Base.new(period, options).parse end
Same as parse
but returns a range instead
@example Basic useage
rng = DatePeriodParser.range("2014") rng.member? DateTime.new(2014,8,6)
@see parse
@param [String] period date period string. @raise [ArgumentError] if period string is invalid @option options [String] :offset (“+0000”) timezone offset, e.g. “+0700” @option options [String] :default (nil) use this default if `period` is nil @return [Range<DateTime, DateTime>] start and end DateTime as range
# File lib/date_period_parser.rb, line 74 def range(period, options = {}) range!(period, options) rescue ArgumentError => e nil end
Same as range
but raises an ArgumentError if period string is invalid
@example Basic useage
def my_method rng = DatePeriodParser.range!("FOOBAR") rescue ArgumentError => e # do something end
@see parse
@param [String] period date period string. @raise [ArgumentError] if period string is invalid @option options [String] :offset (“+0000”) timezone offset, e.g. “+0700” @option options [String] :default (nil) use this default if `period` is nil @return [Range<DateTime, DateTime>] start and end DateTime as range
# File lib/date_period_parser.rb, line 96 def range!(period, options = {}) period = options[:default] if period.nil? || period.empty? first,last = Base.new(period, options).parse first..last end
Private Instance Methods
Returns array of start and end DateTime of given period string.
@example Basic useage
DatePeriodParser.parse("2014") # => [ # #<DateTime 2014-01-01T00:00:00.000+0000">, # #<DateTime 2014-12-31T23:59:59.999+0000"> # ]
@example with timezone offsets:
from,until = DatePeriodParser.parse("2014", offset: "+0700") from # => #<DateTime 2014-01-01T00:00:00.000+0700"> until # => #<DateTime 2014-12-31T23:59:59.999+0700">
@example invalid periods
DatePeriodParser.parse("123213") # => nil from,until = DatePeriodParser.parse("123213") from # => nil until # => nil
@param [String] period date period string. @option options [String] :offset (“+0000”) timezone offset, e.g. “+0700” @option options [String] :default (nil) use this default if `period` is nil @return [Array<DateTime, DateTime>] start and end DateTime @return [nil] if period string is invalid
# File lib/date_period_parser.rb, line 34 def parse(period, options = {}) parse!(period, options) rescue ArgumentError => e nil end
Same as parse
but raises an ArgumentError if period string is invalid
@example Basic useage
def my_method from,until = DatePeriodParser.parse!("FOOBAR") rescue ArgumentError => e # do something end
@see parse
@param [String] period date period string. @raise [ArgumentError] if period string is invalid @option options [String] :offset (“+0000”) timezone offset, e.g. “+0700” @option options [String] :default (nil) use this default if `period` is nil @return [Array<DateTime, DateTime>] start and end DateTime
# File lib/date_period_parser.rb, line 56 def parse!(period, options = {}) period = options[:default] if period.nil? || period.empty? Base.new(period, options).parse end
Same as parse
but returns a range instead
@example Basic useage
rng = DatePeriodParser.range("2014") rng.member? DateTime.new(2014,8,6)
@see parse
@param [String] period date period string. @raise [ArgumentError] if period string is invalid @option options [String] :offset (“+0000”) timezone offset, e.g. “+0700” @option options [String] :default (nil) use this default if `period` is nil @return [Range<DateTime, DateTime>] start and end DateTime as range
# File lib/date_period_parser.rb, line 74 def range(period, options = {}) range!(period, options) rescue ArgumentError => e nil end
Same as range
but raises an ArgumentError if period string is invalid
@example Basic useage
def my_method rng = DatePeriodParser.range!("FOOBAR") rescue ArgumentError => e # do something end
@see parse
@param [String] period date period string. @raise [ArgumentError] if period string is invalid @option options [String] :offset (“+0000”) timezone offset, e.g. “+0700” @option options [String] :default (nil) use this default if `period` is nil @return [Range<DateTime, DateTime>] start and end DateTime as range
# File lib/date_period_parser.rb, line 96 def range!(period, options = {}) period = options[:default] if period.nil? || period.empty? first,last = Base.new(period, options).parse first..last end