class Mutations::TimeFilter

Public Instance Methods

filter(data) click to toggle source
# File lib/mutations/time_filter.rb, line 10
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:
  return [data, :empty] if '' == data

  if data.is_a?(Time) # Time
    actual_time = data
  elsif data.is_a?(String)
    begin
      actual_time = if options[:format]
                      Time.strptime(data, options[:format])
                    else
                      Time.parse(data)
                    end
    rescue ArgumentError
      return [nil, :time]
    end
  elsif data.respond_to?(:to_time) # Date, DateTime
    actual_time = data.to_time
  else
    return [nil, :time]
  end

  if options[:after]
    if actual_time <= options[:after]
      return [nil, :after]
    end
  end

  if options[:before]
    if actual_time >= options[:before]
      return [nil, :before]
    end
  end

  # We win, it's valid!
  [actual_time, nil]
end