Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
NodeTraverser example
$filter
->
setNode
(
'node',
$this
->
getEscaperFilter
(
$type
,
$node
)
)
;
return
$filter
;
}
private
function
isSafeFor
(
string
$type
, Node
$expression
, Environment
$env
)
: bool
{
$safe
=
$this
->safeAnalysis->
getSafe
(
$expression
)
;
if
(
null ===
$safe
)
{
if
(
null ===
$this
->traverser
)
{
$this
->traverser =
new
NodeTraverser
(
$env
,
[
$this
->safeAnalysis
]
)
;
}
$this
->safeAnalysis->
setSafeVars
(
$this
->safeVars
)
;
$this
->traverser->
traverse
(
$expression
)
;
$safe
=
$this
->safeAnalysis->
getSafe
(
$expression
)
;
}
return
\
in_array
(
$type
,
$safe
)
|| \
in_array
(
'all',
$safe
)
;
}
if
(
!
$e
->
getTemplateLine
(
)
)
{
$e
->
setTemplateLine
(
$this
->stream->
getCurrent
(
)
->
getLine
(
)
)
;
}
throw
$e
;
}
$node
=
new
ModuleNode
(
new
BodyNode
(
[
$body
]
)
,
$this
->parent,
new
Node
(
$this
->blocks
)
,
new
Node
(
$this
->macros
)
,
new
Node
(
$this
->traits
)
,
$this
->embeddedTemplates,
$stream
->
getSourceContext
(
)
)
;
$traverser
=
new
NodeTraverser
(
$this
->env,
$this
->visitors
)
;
$node
=
$traverser
->
traverse
(
$node
)
;
// restore previous stack so previous parse() call can resume working
foreach
(
array_pop
(
$this
->stack
)
as
$key
=>
$val
)
{
$this
->
$key
=
$val
;
}
return
$node
;
}