Sha256: 23b74b58d953fe75d4009bc577d1b6ad2d7d0779d2c08573c14edb16c43698d8
Contents?: true
Size: 927 Bytes
Versions: 3
Compression:
Stored size: 927 Bytes
Contents
module Mutations class BooleanFilter < AdditionalFilter @default_options = { :nils => false # true allows an explicit nil to be valid. Overrides any other options } BOOL_MAP = {"true" => true, "1" => true, "false" => false, "0" => false} def filter(data) # Handle nil case if data.nil? return [nil, nil] if options[:nils] return [nil, :nils] end # If data is true or false, we win. return [data, nil] if data == true || data == false # If data is a Fixnum, like 1, let's convert it to a string first data = data.to_s if data.is_a?(Fixnum) # If data's a string, try to convert it to a boolean. If we can't, it's invalid. if data.is_a?(String) res = BOOL_MAP[data.downcase] return [res, nil] unless res.nil? return [data, :boolean] else return [data, :boolean] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mutations-0.7.1 | lib/mutations/boolean_filter.rb |
mutations-0.7.0 | lib/mutations/boolean_filter.rb |
mutations-0.6.0 | lib/mutations/boolean_filter.rb |