diff --git a/lib/liquid/parser.rb b/lib/liquid/parser.rb index 5709e1be..5c2613c8 100644 --- a/lib/liquid/parser.rb +++ b/lib/liquid/parser.rb @@ -48,7 +48,17 @@ module Liquid end def expression - parse_expression(expression_string) + token = @tokens[@p] + case token[0] + when :string + string + else + parse_expression(expression_string) + end + end + + def string + consume(:string)[1..-2] end def argument_string diff --git a/test/unit/parser_unit_test.rb b/test/unit/parser_unit_test.rb index a800f90e..9bf737f0 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_string + p = new_parser("'s1' \"s2\" 'this \"s3\"' \"that 's4'\"") + assert_equal('s1', p.string) + assert_equal('s2', p.string) + assert_equal('this "s3"', p.string) + assert_equal("that 's4'", p.string) + end + def test_ranges p = new_parser("(5..7) (1.5..9.6) (young..old) (hi[5].wat..old)") assert_equal('(5..7)', p.expression_string)