Commit 96152d09 by cole bradley

add BigDecimal conversion for formatted currency strings

parent d80c0aec
......@@ -56,6 +56,7 @@ module RailsParam
return Array(param.split(options[:delimiter] || ",")) if type == Array
return Hash[param.split(options[:delimiter] || ",").map{|c| c.split(options[:separator] || ":")}] if type == Hash
return (/(false|f|no|n|0)$/i === param.to_s ? false : (/(true|t|yes|y|1)$/i === param.to_s ? true : nil)) if type == TrueClass || type == FalseClass || type == :boolean
return BigDecimal.new(param.delete('$,').strip) if type == BigDecimal && param.is_a?(String)
return BigDecimal.new(param, (options[:precision] || DEFAULT_PRECISION)) if type == BigDecimal
return nil
rescue ArgumentError
......
......@@ -112,6 +112,13 @@ describe RailsParam::Param do
controller.param! :foo, BigDecimal, precision: 6
expect(controller.params["foo"]).to eql 12345.7
end
it "converts formatted currency string to big decimal" do
allow(controller).to receive(:params).and_return({ "foo" => "$100,000"})
controller.param! :foo, BigDecimal
expect(controller.params["foo"]).to eql 100000.0
end
end
describe "booleans" do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment