mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-28 22:55:12 -07:00
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user