module Saneitized

Constants

VERSION

Public Class Methods

convert(unknown, options = {}) click to toggle source
# File lib/saneitized/converter.rb, line 6
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)

  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