Class: Mutations::IntegerFilter

Inherits:
AdditionalFilter show all
Defined in:
lib/mutations/integer_filter.rb

Instance Attribute Summary

Attributes inherited from InputFilter

#options

Instance Method Summary collapse

Methods inherited from AdditionalFilter

inherited

Methods inherited from InputFilter

#default, default_options, #discard_empty?, #discard_invalid?, #discard_nils?, #has_default?, #initialize

Constructor Details

This class inherits a constructor from Mutations::InputFilter

Instance Method Details

#filter(data) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/mutations/integer_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 == ""

  # Ensure it's the correct data type (Fixnum)
  if !data.is_a?(Fixnum)
    if data.is_a?(String) && data =~ /^-?\d/
      data = data.to_i
    else
      return [data, :integer]
    end
  end

  return [data, :min] if options[:min] && data < options[:min]
  return [data, :max] if options[:max] && data > options[:max]

  # Ensure it matches `in`
  return [data, :in] if options[:in] && !options[:in].include?(data)

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