Compare commits

...

2 Commits

Author SHA1 Message Date
Dylan Thacker-Smith
25deb9e529 Update test to cover multiple consecutive dashes in identifiers. 2015-07-31 00:27:57 -04:00
Dylan Thacker-Smith
b140e91d8e Don't allow identifiers to end in a dash in strict parse mode. 2015-07-30 22:50:34 -04:00
2 changed files with 4 additions and 1 deletions

View File

@@ -13,7 +13,7 @@ module Liquid
'?'.freeze => :question, '?'.freeze => :question,
'-'.freeze => :dash '-'.freeze => :dash
} }
IDENTIFIER = /[a-zA-Z_][\w-]*\??/ IDENTIFIER = /[a-zA-Z_](?:[\w-]*\w)?\??/
SINGLE_STRING_LITERAL = /'[^\']*'/ SINGLE_STRING_LITERAL = /'[^\']*'/
DOUBLE_STRING_LITERAL = /"[^\"]*"/ DOUBLE_STRING_LITERAL = /"[^\"]*"/
NUMBER_LITERAL = /-?\d+(\.\d+)?/ NUMBER_LITERAL = /-?\d+(\.\d+)?/

View File

@@ -36,6 +36,9 @@ class LexerUnitTest < Minitest::Test
tokens = Lexer.new('2foo').tokenize tokens = Lexer.new('2foo').tokenize
assert_equal [[:number, '2'], [:id, 'foo'], [:end_of_string]], tokens 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 end
def test_whitespace def test_whitespace