From b242a7273aadfbc910522ac1033afc2a6dc40045 Mon Sep 17 00:00:00 2001 From: Florian Weingarten Date: Fri, 7 Nov 2014 01:48:05 +0000 Subject: [PATCH] Revert "Merge pull request #478 from Shopify/numbers-in-identifiers" This reverts commit 263e90e7725586b66339eda953c8e6fbc7af8a6f, reversing changes made to 4dc682313f1d3159eca28dffbe9206ef4879078c. --- lib/liquid/lexer.rb | 2 +- lib/liquid/parser.rb | 7 +++++++ lib/liquid/variable.rb | 8 ++++++++ test/unit/lexer_unit_test.rb | 5 +---- test/unit/variable_unit_test.rb | 11 ----------- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/lib/liquid/lexer.rb b/lib/liquid/lexer.rb index 4b724b1..cb8e591 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 = /\w+/ SINGLE_STRING_LITERAL = /'[^\']*'/ DOUBLE_STRING_LITERAL = /"[^\"]*"/ NUMBER_LITERAL = /-?\d+(\.\d+)?/ diff --git a/lib/liquid/parser.rb b/lib/liquid/parser.rb index d2006f3..ecf3634 100644 --- a/lib/liquid/parser.rb +++ b/lib/liquid/parser.rb @@ -75,6 +75,13 @@ module Liquid def variable_signature str = consume(:id) + while consume?(:dash) + str << "-".freeze + str << consume(:id) + end + if consume?(:question) + str << "?".freeze + end if look(:open_square) str << consume str << expression diff --git a/lib/liquid/variable.rb b/lib/liquid/variable.rb index 92b0537..a93fed7 100644 --- a/lib/liquid/variable.rb +++ b/lib/liquid/variable.rb @@ -12,6 +12,7 @@ module Liquid # class Variable FilterParser = /(?:\s+|#{QuotedFragment}|#{ArgumentSeparator})+/o + EasyParse = /\A *(\w+(?:\.\w+)*) *\z/ attr_accessor :filters, :name, :warnings attr_accessor :line_number include ParserSwitching @@ -52,6 +53,13 @@ module Liquid end def strict_parse(markup) + # Very simple valid cases + if markup =~ EasyParse + @name = Expression.parse($1) + @filters = [] + return + end + @filters = [] p = Parser.new(markup) diff --git a/test/unit/lexer_unit_test.rb b/test/unit/lexer_unit_test.rb index c331380..ef341a1 100644 --- a/test/unit/lexer_unit_test.rb +++ b/test/unit/lexer_unit_test.rb @@ -32,10 +32,7 @@ class LexerUnitTest < Minitest::Test def test_fancy_identifiers tokens = Lexer.new('hi five?').tokenize - assert_equal [[:id, 'hi'], [:id, 'five?'], [:end_of_string]], tokens - - tokens = Lexer.new('2foo').tokenize - assert_equal [[:number, '2'], [:id, 'foo'], [:end_of_string]], tokens + assert_equal [[:id,'hi'], [:id, 'five'], [:question, '?'], [:end_of_string]], tokens end def test_whitespace diff --git a/test/unit/variable_unit_test.rb b/test/unit/variable_unit_test.rb index 084b846..13d2cc4 100644 --- a/test/unit/variable_unit_test.rb +++ b/test/unit/variable_unit_test.rb @@ -102,17 +102,6 @@ class VariableUnitTest < Minitest::Test assert_equal 1000.01, var.name end - def test_dashes - assert_equal VariableLookup.new('foo-bar'), Variable.new('foo-bar').name - assert_equal VariableLookup.new('foo-bar-2'), Variable.new('foo-bar-2').name - - with_error_mode :strict do - assert_raises(Liquid::SyntaxError) { Variable.new('foo - bar') } - assert_raises(Liquid::SyntaxError) { Variable.new('-foo') } - assert_raises(Liquid::SyntaxError) { Variable.new('2foo') } - end - end - def test_string_with_special_chars var = Variable.new(%| 'hello! $!@.;"ddasd" ' |) assert_equal 'hello! $!@.;"ddasd" ', var.name