class Mutations::DateFilter
Public Instance Methods
filter(data)
click to toggle source
# File lib/mutations/date_filter.rb, line 11 def filter(data) # Handle nil case if data.nil? return [nil, nil] if options[:nils] return [nil, :nils] end # Now check if it's empty: if data == "" if options[:empty_is_nil] return [nil, (:nils unless options[:nils])] else return [data, :empty] end end if data.is_a?(Date) # Date and DateTime actual_date = data elsif data.is_a?(String) begin actual_date = if options[:format] Date.strptime(data, options[:format]) else Date.parse(data) end rescue ArgumentError return [nil, :date] end elsif data.respond_to?(:to_date) # Time actual_date = data.to_date else return [nil, :date] end # Ok, its a valid date, check if it falls within the range if options[:after] if actual_date <= options[:after] return [nil, :after] end end if options[:before] if actual_date >= options[:before] return [nil, :before] end end # We win, it's valid! [actual_date, nil] end