diff --git a/lib/liquid.rb b/lib/liquid.rb index 0a970005..367fc3c4 100644 --- a/lib/liquid.rb +++ b/lib/liquid.rb @@ -68,7 +68,6 @@ require 'liquid/extensions' require 'liquid/errors' require 'liquid/interrupts' require 'liquid/strainer_template' -require 'liquid/expression' require 'liquid/context' require 'liquid/tag' require 'liquid/block_body' @@ -77,6 +76,7 @@ require 'liquid/variable' require 'liquid/variable_lookup' require 'liquid/range_lookup' require 'liquid/resource_limits' +require 'liquid/expression' require 'liquid/template' require 'liquid/condition' require 'liquid/utils' diff --git a/lib/liquid/expression.rb b/lib/liquid/expression.rb index 22cc7227..e10f9793 100644 --- a/lib/liquid/expression.rb +++ b/lib/liquid/expression.rb @@ -57,7 +57,8 @@ module Liquid 'true' => true, 'false' => false, 'blank' => '', - 'empty' => '' + 'empty' => '', + '-' => VariableLookup.parse("-") }.freeze DOT = ".".ord diff --git a/test/integration/expression_test.rb b/test/integration/expression_test.rb index 7f451afd..dc57ad28 100644 --- a/test/integration/expression_test.rb +++ b/test/integration/expression_test.rb @@ -23,7 +23,7 @@ class ExpressionTest < Minitest::Test end def test_float - assert_template_result("-17.42", "{{ -17.42 }}") + assert_template_result("-17.42", "{{ -17.42 }}") assert_template_result("2.5", "{{ 2.5 }}") assert_expression_result(1.5, "1.5") end @@ -42,6 +42,18 @@ class ExpressionTest < Minitest::Test ) end + def test_quirky_negative_sign_expression_markup + result = Expression.parse("-") + assert(result.is_a?(VariableLookup)) + assert_equal("-", result.name) + + # for this template, the expression markup is "-" + assert_template_result( + "", + "{{ - 'theme.css' - }}", + ) + end + private def assert_expression_result(expect, markup, **assigns)