From 1597f8859f08b7d594e6b47b9b5b9662cca145d3 Mon Sep 17 00:00:00 2001 From: Florian Weingarten Date: Thu, 31 Mar 2016 09:15:00 -0400 Subject: [PATCH] Fix to_number filter for negative float strings --- lib/liquid/utils.rb | 2 +- test/integration/standard_filter_test.rb | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/liquid/utils.rb b/lib/liquid/utils.rb index f8f5d71..fc05ac5 100644 --- a/lib/liquid/utils.rb +++ b/lib/liquid/utils.rb @@ -50,7 +50,7 @@ module Liquid when Numeric obj when String - (obj.strip =~ /\A\d+\.\d+\z/) ? BigDecimal.new(obj) : obj.to_i + (obj.strip =~ /\A-?\d+\.\d+\z/) ? BigDecimal.new(obj) : obj.to_i else if obj.respond_to?(:to_number) obj.to_number diff --git a/test/integration/standard_filter_test.rb b/test/integration/standard_filter_test.rb index 7412f65..e63cf7e 100644 --- a/test/integration/standard_filter_test.rb +++ b/test/integration/standard_filter_test.rb @@ -388,11 +388,10 @@ class StandardFiltersTest < Minitest::Test def test_times assert_template_result "12", "{{ 3 | times:4 }}" assert_template_result "0", "{{ 'foo' | times:4 }}" - assert_template_result "6", "{{ '2.1' | times:3 | replace: '.','-' | plus:0}}" - assert_template_result "7.25", "{{ 0.0725 | times:100 }}" - + assert_template_result "-7.25", '{{ "-0.0725" | times:100 }}' + assert_template_result "7.25", '{{ "-0.0725" | times: -100 }}' assert_template_result "4", "{{ price | times:2 }}", 'price' => NumberLikeThing.new(2) end