Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
AssignNameExpression example
// {% stopwatch 'bar' %}
$name
=
$this
->parser->
getExpressionParser
(
)
->
parseExpression
(
)
;
$stream
->
expect
(
Token::BLOCK_END_TYPE
)
;
// {% endstopwatch %}
$body
=
$this
->parser->
subparse
(
$this
->
decideStopwatchEnd
(
...
)
, true
)
;
$stream
->
expect
(
Token::BLOCK_END_TYPE
)
;
if
(
$this
->stopwatchIsAvailable
)
{
return
new
StopwatchNode
(
$name
,
$body
,
new
AssignNameExpression
(
$this
->parser->
getVarName
(
)
,
$token
->
getLine
(
)
)
,
$lineno
,
$this
->
getTag
(
)
)
;
}
return
$body
;
}
public
function
decideStopwatchEnd
(
Token
$token
)
: bool
{
return
$token
->
test
(
'endstopwatch'
)
;
}
public
function
getTag
(
)
: string
{
if
(
$node
instanceof BlockNode ||
$node
instanceof ModuleNode
)
{
$this
->scope =
$this
->scope->
enter
(
)
;
}
if
(
$node
instanceof TransDefaultDomainNode
)
{
if
(
$node
->
getNode
(
'expr'
)
instanceof ConstantExpression
)
{
$this
->scope->
set
(
'domain',
$node
->
getNode
(
'expr'
)
)
;
return
$node
;
}
else
{
$var
=
$this
->
getVarName
(
)
;
$name
=
new
AssignNameExpression
(
$var
,
$node
->
getTemplateLine
(
)
)
;
$this
->scope->
set
(
'domain',
new
NameExpression
(
$var
,
$node
->
getTemplateLine
(
)
)
)
;
return
new
SetNode
(
false,
new
Node
(
[
$name
]
)
,
new
Node
(
[
$node
->
getNode
(
'expr'
)
]
)
,
$node
->
getTemplateLine
(
)
)
;
}
}
if
(
!
$this
->scope->
has
(
'domain'
)
)
{
return
$node
;
}
if
(
$node
instanceof FilterExpression && 'trans' ===
$node
->
getNode
(
'filter'
)
->
getAttribute
(
'value'
)
)
{