Merge pull request #80 from ROFISH/master

Add Filters to Assign
This commit is contained in:
Tobias Lütke
2011-12-20 13:58:05 -08:00
2 changed files with 9 additions and 3 deletions
+3 -3
View File
@@ -9,12 +9,12 @@ module Liquid
# {{ foo }} # {{ foo }}
# #
class Assign < Tag class Assign < Tag
Syntax = /(#{VariableSignature}+)\s*=\s*(#{QuotedFragment}+)/ Syntax = /(#{VariableSignature}+)\s*=\s*(.*)\s*/
def initialize(tag_name, markup, tokens) def initialize(tag_name, markup, tokens)
if markup =~ Syntax if markup =~ Syntax
@to = $1 @to = $1
@from = $2 @from = Variable.new($2)
else else
raise SyntaxError.new("Syntax Error in 'assign' - Valid syntax: assign [var] = [source]") raise SyntaxError.new("Syntax Error in 'assign' - Valid syntax: assign [var] = [source]")
end end
@@ -23,7 +23,7 @@ module Liquid
end end
def render(context) def render(context)
context.scopes.last[@to] = context[@from] context.scopes.last[@to] = @from.render(context)
'' ''
end end
+6
View File
@@ -12,4 +12,10 @@ class AssignTest < Test::Unit::TestCase
'{% assign foo = values %}.{{ foo[1] }}.', '{% assign foo = values %}.{{ foo[1] }}.',
'values' => %w{foo bar baz}) 'values' => %w{foo bar baz})
end end
def test_assign_with_filter
assert_template_result('.bar.',
'{% assign foo = values | split: "," %}.{{ foo[1] }}.',
'values' => "foo,bar,baz")
end
end # AssignTest end # AssignTest