module DatePeriodParser

Constants

DEFAULT_OFFSET
VERSION

Public Class Methods

parse(period, options = {}) click to toggle source

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
parse!(period, options = {}) click to toggle source

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
range(period, options = {}) click to toggle source

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
range!(period, options = {}) click to toggle source

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

parse(period, options = {}) click to toggle source

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
parse!(period, options = {}) click to toggle source

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
range(period, options = {}) click to toggle source

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
range!(period, options = {}) click to toggle source

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