diff --git a/lib/liquid/lexer.rb b/lib/liquid/lexer.rb index b9f2422..6ca75bd 100644 --- a/lib/liquid/lexer.rb +++ b/lib/liquid/lexer.rb @@ -13,7 +13,7 @@ module Liquid '?'.freeze => :question, '-'.freeze => :dash } - IDENTIFIER = /[a-zA-Z_][\w-]*\??/ + IDENTIFIER = /[a-zA-Z_](?:[\w-]*\w)?\??/ SINGLE_STRING_LITERAL = /'[^\']*'/ DOUBLE_STRING_LITERAL = /"[^\"]*"/ NUMBER_LITERAL = /-?\d+(\.\d+)?/ diff --git a/test/unit/lexer_unit_test.rb b/test/unit/lexer_unit_test.rb index af9c267..6f9307f 100644 --- a/test/unit/lexer_unit_test.rb +++ b/test/unit/lexer_unit_test.rb @@ -36,6 +36,9 @@ class LexerUnitTest < Minitest::Test tokens = Lexer.new('2foo').tokenize assert_equal [[:number, '2'], [:id, 'foo'], [:end_of_string]], tokens + + tokens = Lexer.new('foo-bar-baz-').tokenize + assert_equal [[:id, 'foo-bar-baz'], [:dash, "-"], [:end_of_string]], tokens end def test_whitespace