diff --git a/lib/liquid/parser.rb b/lib/liquid/parser.rb index 5c2613c8..ba4bad57 100644 --- a/lib/liquid/parser.rb +++ b/lib/liquid/parser.rb @@ -52,11 +52,18 @@ module Liquid case token[0] when :string string + when :number + number else parse_expression(expression_string) end end + def number + num = consume(:number) + Expression.parse_number(num) + end + def string consume(:string)[1..-2] end diff --git a/test/integration/expression_test.rb b/test/integration/expression_test.rb index 166df250..fd5273fa 100644 --- a/test/integration/expression_test.rb +++ b/test/integration/expression_test.rb @@ -67,7 +67,7 @@ class ExpressionTest < Minitest::Test Liquid::Template.parse(template, expression_cache: cache).render assert_equal( - ["1", "2", "x", "y"], + ["x", "y"], cache.to_a.map { _1[0] }.sort, ) end @@ -91,7 +91,7 @@ class ExpressionTest < Minitest::Test cache = parse_context.instance_variable_get(:@expression_cache) assert_equal( - ["1", "2", "x", "y"], + ["x", "y"], cache.to_a.map { _1[0] }.sort, ) end @@ -112,7 +112,7 @@ class ExpressionTest < Minitest::Test Liquid::Template.parse(template, expression_cache: cache).render assert_equal( - ["1", "2", "x", "y"], + ["x", "y"], cache.to_a.map { _1[0] }.sort, ) end diff --git a/test/unit/parser_unit_test.rb b/test/unit/parser_unit_test.rb index 9bf737f0..117114bf 100644 --- a/test/unit/parser_unit_test.rb +++ b/test/unit/parser_unit_test.rb @@ -58,6 +58,14 @@ class ParserUnitTest < Minitest::Test assert_equal('"wut"', p.expression_string) end + def test_number + p = new_parser('-1 0 1 2.0') + assert_equal(-1, p.number) + assert_equal(0, p.number) + assert_equal(1, p.number) + assert_equal(2.0, p.number) + end + def test_string p = new_parser("'s1' \"s2\" 'this \"s3\"' \"that 's4'\"") assert_equal('s1', p.string)