module RST::CalendarHelper
Some useful helpers for dates
Public Instance Methods
parse_date_param(param)
click to toggle source
You can use ‘today’ or any format which Date.parse can handle. @example
parse_date_param('1w') parse_date_param('-41d') parse_date_param('1week') parse_date_param('4months') parse_date_param('-12m') parse_date_param('today')
@param [nil|String|Time|Date] param @return [Date] always returns a Date regardless of the type of input
# File lib/modules/calendar/calendar_helper.rb, line 16 def parse_date_param(param) if param.is_a?(Date) || param.is_a?(::Time) param elsif param =~ /today/i || param.nil? Date.today elsif param =~ /\d+[a-zA-Z]/i get_today_plus(param) else Date.parse(param) end end
Private Instance Methods
get_today_plus(param)
click to toggle source
Get Today + param @example
get_today_plus('1w') get_today_plus('-41d') get_today_plus('1week') get_today_plus('4months') get_today_plus('-12m')
@param [String] param nDWM n=Number Day Weeks Months
# File lib/modules/calendar/calendar_helper.rb, line 38 def get_today_plus(param) offset = 0 param.scan(/(\-?)(\d+)([a-z])/i) do |dir,count,unit| _count = count.to_i * ( dir.to_s == '-' ? -1 : 1 ) offset = case unit[0].downcase when 'd' _count.to_i.days when 'w' _count.to_i.weeks when 'm' _count.to_i.months else raise "Unknown unit #{unit}. Valid units are d,w,m or days,weeks,months" end end Date.parse( (Time.now + offset).to_s ) end