if blocks work with filtered variables

This commit is contained in:
James MacAulay
2008-10-15 17:02:26 -04:00
parent 69bc84b777
commit 282786d7e2
5 changed files with 24 additions and 5 deletions
+7
View File
@@ -133,6 +133,9 @@ module Liquid
:blank?
when 'empty'
:empty?
# filtered variables
when SpacelessFilter
filtered_variable(key)
# Single quoted strings
when /^'(.*)'$/
$1.to_s
@@ -221,5 +224,9 @@ module Liquid
object
end
def filtered_variable(markup)
Variable.new(markup).render(self)
end
end
end
+1 -1
View File
@@ -13,7 +13,7 @@ module Liquid
#
class If < Block
SyntaxHelp = "Syntax Error in tag 'if' - Valid syntax: if [expression]"
Syntax = /(#{QuotedFragment})\s*([=!<>a-z_]+)?\s*(#{QuotedFragment})?/
Syntax = /(#{Expression})\s*([=!<>a-z_]+)?\s*(#{Expression})?/
def initialize(tag_name, markup, tokens)
+2 -2
View File
@@ -19,8 +19,8 @@ module Liquid
@filters = []
if match = markup.match(/\s*(#{QuotedFragment})/)
@name = match[1]
if markup.match(/#{FilterSperator}\s*(.*)/)
filters = Regexp.last_match(1).split(/#{FilterSperator}/)
if markup.match(/#{FilterSeparator}\s*(.*)/)
filters = Regexp.last_match(1).split(/#{FilterSeparator}/)
filters.each do |f|
if matches = f.match(/\s*(\w+)/)