Skip to content

Instantly share code, notes, and snippets.

@DGaffney
Created February 1, 2011 19:22
Show Gist options
  • Select an option

  • Save DGaffney/806445 to your computer and use it in GitHub Desktop.

Select an option

Save DGaffney/806445 to your computer and use it in GitHub Desktop.
def clean_values(elem)
if elem.empty?
elem = nil
elsif elem.starts_with?("\"") or elem.starts_with?("'")
elem = elem.gsub(/[\'|\"]/, "")
elsif elem.starts_with?("{")
new_val = {}
elem.gsub(/[\{|\}]/,"").split(/\=\>(.*)\,/).collect{|x| x.split("=>")}.collect{|x| new_val[x[0].gsub(/[\'|\"|:]/,"").strip.to_sym] = x[1]}
elem = new_val
elsif elem.starts_with?("[")
elem = elem.gsub(/[\[|\]]/,"").split(",").collect{|x| clean_values(x)}
else
if !elem.scan(/(\d+\.\d+)/).empty?
if elem.scan(/(0+\.0+)/).empty?
elem = elem.to_f==0.0 ? nil : elem.to_f
else
elem = 0.0
end
else
if elem.scan(/(0+)/).empty?
elem = elem.to_i==0 ? nil : elem.to_i
else
elem = 0
end
end
end
return elem
end
value = "";clean_values(value)
value = "1";clean_values(value)
value = "0";clean_values(value)
value = "1.00";clean_values(value)
value = "0.00";clean_values(value)
value = "'0.00'";clean_values(value)
value = "[1,'2',\"3\",4,7.22,00.00,0.0000]";clean_values(value)
value = "{:one => \"17\", :two => 0.000}";clean_values(value)
value = "{:one => \"17\", :two => 0.000, :three => 1.23, :four => 0, 'five' => [1,'2',\"3\",4,7.22,00.00,0.0000]}";clean_values(value)
{:one => "one", :two => 2}.to_s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment