class DateParams::Parser
Attributes
date_format[R]
options[R]
param[R]
params[R]
time_format[R]
Public Class Methods
new(param, options, params)
click to toggle source
# File lib/date_params/parser.rb, line 13 def initialize(param, options, params) @param = param @options = options @params = params @date_format = options.fetch :date_format, default_date_format @time_format = options.fetch :time_format, default_time_format end
Public Instance Methods
parse_date_param!(field = param)
click to toggle source
# File lib/date_params/parser.rb, line 21 def parse_date_param!(field = param) date_string = traversed_params.try(:[], field) return if date_string.blank? inferred_date_format = date_string =~ /\d{4}-\d{2}-\d{2}/ ? '%Y-%m-%d' : date_format date = Date.strptime(date_string, inferred_date_format) traversed_params[field] = date if date end
parse_datetime_param!()
click to toggle source
# File lib/date_params/parser.rb, line 29 def parse_datetime_param! if param.is_a? Hash fields = param fields.assert_valid_keys :date, :time, :field else fields = { date: "#{param}_date".to_sym, time: "#{param}_time".to_sym, field: param } end date = parse_date_param! fields[:date] return if date.blank? time_string = traversed_params.try(:[], fields[:time]) return if time_string.blank? datetime_format = "%Y-%m-%dT#{time_format}%z" datetime_string = "#{date.iso8601}T#{time_string}#{Time.zone.name}" datetime = Time.strptime(datetime_string, datetime_format).in_time_zone(Time.zone) traversed_params[fields[:field]] = datetime if datetime end
Protected Instance Methods
default_date_format()
click to toggle source
# File lib/date_params/parser.rb, line 53 def default_date_format '%m/%d/%Y' end
default_time_format()
click to toggle source
# File lib/date_params/parser.rb, line 57 def default_time_format '%I:%M %p' end
Private Instance Methods
traversed_params()
click to toggle source
# File lib/date_params/parser.rb, line 63 def traversed_params traversed_params = params if options[:namespace].present? traversed_params = traversed_params.try :[], options[:namespace] end traversed_params end