<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -22,7 +22,7 @@
 $LOAD_PATH.unshift(File.dirname(__FILE__))
 
 module Liquid
-  FilterSperator              = /\|/
+  FilterSeparator              = /\|/
   ArgumentSeparator           = ','
   FilterArgumentSeparator     = ':'
   VariableAttributeSeparator  = '.'
@@ -33,7 +33,12 @@ module Liquid
   VariableStart               = /\{\{/
   VariableEnd                 = /\}\}/
   VariableIncompleteEnd       = /\}\}?/
-  QuotedFragment              = /&quot;[^&quot;]+&quot;|'[^']+'|[^\s,|]+/
+  QuotedFragment              = /&quot;[^&quot;]+&quot;|'[^']+'|[^\s,\|]+/
+  StrictQuotedFragment        = /&quot;[^&quot;]+&quot;|'[^']+'|[^\s,\|,\:,\,]+/
+  FirstFilterArgument         = /#{FilterArgumentSeparator}(?:#{StrictQuotedFragment})/
+  OtherFilterArgument         = /#{ArgumentSeparator}(?:#{StrictQuotedFragment})/
+  SpacelessFilter             = /#{FilterSeparator}(?:#{StrictQuotedFragment})(?:#{FirstFilterArgument}(?:#{OtherFilterArgument})*)?/
+  Expression                  = /(?:#{QuotedFragment}(?:#{SpacelessFilter})*)/
   TagAttributes               = /(\w+)\s*\:\s*(#{QuotedFragment})/
   TemplateParser              = /(#{TagStart}.*?#{TagEnd}|#{VariableStart}.*?#{VariableIncompleteEnd})/
   VariableParser              = /\[[^\]]+\]|#{VariableSegment}+/</diff>
      <filename>lib/liquid.rb</filename>
    </modified>
    <modified>
      <diff>@@ -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</diff>
      <filename>lib/liquid/context.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ module Liquid
   #
   class If &lt; Block
     SyntaxHelp = &quot;Syntax Error in tag 'if' - Valid syntax: if [expression]&quot;
-    Syntax = /(#{QuotedFragment})\s*([=!&lt;&gt;a-z_]+)?\s*(#{QuotedFragment})?/
+    Syntax = /(#{Expression})\s*([=!&lt;&gt;a-z_]+)?\s*(#{Expression})?/
     
     def initialize(tag_name, markup, tokens)    
     </diff>
      <filename>lib/liquid/tags/if.rb</filename>
    </modified>
    <modified>
      <diff>@@ -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+)/)</diff>
      <filename>lib/liquid/variable.rb</filename>
    </modified>
    <modified>
      <diff>@@ -112,6 +112,13 @@ class IfElseTest &lt; Test::Unit::TestCase
     assert_template_result('elsif','{% if false %}if{% elsif true %}elsif{% endif %}')    
   end
   
+  def test_with_filtered_expressions
+    assert_template_result('yes','{% if &quot;BLAH&quot;|downcase == &quot;blah&quot; %}yes{% endif %}')
+    assert_template_result('yes','{% if &quot;FOO BAR&quot;|truncatewords:1,&quot;--&quot; == &quot;FOO--&quot; %}yes{% endif %}')
+    assert_template_result('yes','{% if &quot;FOO BAR&quot;|truncatewords:1,&quot;--&quot;|downcase == &quot;foo--&quot; %}yes{% endif %}')
+    assert_template_result('yes','{% if &quot;foo--&quot; == &quot;FOO BAR&quot;|truncatewords:1,&quot;--&quot;|downcase %}yes{% endif %}')
+  end
+  
   def test_syntax_error_no_variable
     assert_raise(SyntaxError){ assert_template_result('', '{% if jerry == 1 %}')}
   end</diff>
      <filename>test/if_else_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>69bc84b7774f7404067c1d553535f61a462d7313</id>
    </parent>
  </parents>
  <author>
    <name>James MacAulay</name>
    <email>james@jadedpixel.com</email>
  </author>
  <url>http://github.com/tobi/liquid/commit/282786d7e2deb728f82977d4db38b0f7a05e7e76</url>
  <id>282786d7e2deb728f82977d4db38b0f7a05e7e76</id>
  <committed-date>2008-10-15T14:02:26-07:00</committed-date>
  <authored-date>2008-10-15T12:06:58-07:00</authored-date>
  <message>if blocks work with filtered variables</message>
  <tree>8c7ff79034b1515cafa9ba201a3952a04a3a8f57</tree>
  <committer>
    <name>James MacAulay</name>
    <email>james@jadedpixel.com</email>
  </committer>
</commit>
