lib/saneitized/converter.rb in saneitized-1.5.0 vs lib/saneitized/converter.rb in saneitized-2.0.0

- old
+ new

@@ -3,24 +3,32 @@ module Saneitized def self.convert(unknown, options = {}) options[:blacklist] ||= nil + options[:except] ||= [] + options[:add] ||= [] + options[:only] ||= %w(true false nil integer float json) return Saneitized::Hash.new(unknown, options) if unknown.is_a? ::Hash return Saneitized::Array.new(unknown, options) if unknown.is_a? ::Array return unknown unless unknown.is_a? String #Only attempt to convert string return unknown if Array(options[:blacklist]).include?(unknown) - %w(true false nil integer float json time).each do |type| + except = Array(options[:except]).map(&:to_s) + only = Array(options[:only]).map(&:to_s) + add = Array(options[:add]).map(&:to_s) + + sanitizers = (only + add).uniq - except + + sanitizers.each do |type| value = Converter.send(type + '?', unknown) next if value == :nope return (type == 'json') ? convert(value, options) : value end unknown end - module Converter extend self def true?(unknown)