require 'chronic' class Array def _flatten_once self.inject([]) do |set, element| set + Array(element) end end end class Object def _metaclass class << self self end end end class String def _to_numeric zeroless = self.squeeze(" ").strip.sub(/^0+(\d)/, '\1') zeroless.sub!(/(\...*?)0+$/, '\1') if zeroless.to_i.to_s == zeroless zeroless.to_i elsif zeroless.to_f.to_s == zeroless zeroless.to_f elsif date = Chronic.parse(self) date.to_i else self end end end class Hash def _coerce_basic_types Hash[*self.map do |key, value| [key.to_sym, if value.respond_to?(:to_i) && value.to_i.to_s == value value.to_i elsif value == "" nil elsif value.is_a? String value.to_sym else value end] end._flatten_once] end end