From 88309cf4157ed1c071fe2474a41bf6633544856a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20L=C3=BCtke?= Date: Mon, 22 Dec 2008 11:47:26 -0500 Subject: [PATCH] Fixed some parse errors thanks to Daniel Sheppard [Closes #6] --- lib/liquid.rb | 3 ++- lib/liquid/tags/cycle.rb | 5 ++--- test/standard_tag_test.rb | 8 ++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/liquid.rb b/lib/liquid.rb index 363a633..679d1c2 100644 --- a/lib/liquid.rb +++ b/lib/liquid.rb @@ -33,7 +33,8 @@ module Liquid VariableStart = /\{\{/ VariableEnd = /\}\}/ VariableIncompleteEnd = /\}\}?/ - QuotedFragment = /"[^"]+"|'[^']+'|[^\s,\|]+/ + QuotedString = /"[^"]+"|'[^']+'/ + QuotedFragment = /#{QuotedString}|(?:[^\s,\|'"]|#{QuotedString})+/ StrictQuotedFragment = /"[^"]+"|'[^']+'|[^\s,\|,\:,\,]+/ FirstFilterArgument = /#{FilterArgumentSeparator}(?:#{StrictQuotedFragment})/ OtherFilterArgument = /#{ArgumentSeparator}(?:#{StrictQuotedFragment})/ diff --git a/lib/liquid/tags/cycle.rb b/lib/liquid/tags/cycle.rb index 71965ca..64d6d20 100644 --- a/lib/liquid/tags/cycle.rb +++ b/lib/liquid/tags/cycle.rb @@ -13,8 +13,8 @@ module Liquid #
Item five
# class Cycle < Tag - SimpleSyntax = /#{Expression}/ - NamedSyntax = /(#{Expression})\s*\:\s*(.*)/ + SimpleSyntax = /^#{Expression}/ + NamedSyntax = /^(#{Expression})\s*\:\s*(.*)/ def initialize(tag_name, markup, tokens) case markup @@ -27,7 +27,6 @@ module Liquid else raise SyntaxError.new("Syntax Error in 'cycle' - Valid syntax: cycle [name :] var [, var2, var3 ...]") end - super end diff --git a/test/standard_tag_test.rb b/test/standard_tag_test.rb index aae09bd..7b33253 100644 --- a/test/standard_tag_test.rb +++ b/test/standard_tag_test.rb @@ -212,6 +212,11 @@ HERE assert_template_result('a-b:1 a-b:2','a-b:{{a-b}} {%assign a-b = 2 %}a-b:{{a-b}}',assigns) end + + def test_assign_with_colon_and_spaces + assigns = {'var' => {'a:b c' => {'paged' => '1' }}} + assert_template_result('var2: 1','{%assign var2 = var["a:b c"].paged %}var2: {{var2}}',assigns) + end def test_capture assigns = {'var' => 'content' } @@ -348,6 +353,9 @@ HERE assert_template_result('one two','{%cycle "one", "two"%} {%cycle "one", "two"%}') assert_template_result('one two one','{%cycle "one", "two"%} {%cycle "one", "two"%} {%cycle "one", "two"%}') + + assert_template_result('text-align: left text-align: right','{%cycle "text-align: left", "text-align: right" %} {%cycle "text-align: left", "text-align: right"%}') + end def test_multiple_cycles