Sha256: 9b7b2a3c37e3bf27f2c41a0b7585645175df26a05173ba2cb66b42c74ad403f8
Contents?: true
Size: 1.33 KB
Versions: 4
Compression:
Stored size: 1.33 KB
Contents
require 'json' require 'chronic' module Saneitized def self.convert(unknown, options = {}) options[:blacklist] ||= nil 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| 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) (unknown == 'true') ? true : :nope end def false?(unknown) (unknown == 'false') ? false : :nope end def nil?(unknown) (%w(nil null NULL).include? unknown) ? nil : :nope end def json?(unknown) JSON.parse(unknown) rescue JSON::ParserError, TypeError :nope end def integer?(unknown) Integer(unknown) rescue ArgumentError, TypeError :nope end def float?(unknown) Float(unknown) rescue ArgumentError, TypeError :nope end def time?(unknown) value = Chronic.parse(unknown) value.nil? ? :nope : value end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
saneitized-1.5.0 | lib/saneitized/converter.rb |
saneitized-1.4.0 | lib/saneitized/converter.rb |
saneitized-1.3.2 | lib/saneitized/converter.rb |
saneitized-1.3.1 | lib/saneitized/converter.rb |