Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getNodeVisitors example
public
function
testEmptyExtensions
(
)
: void
{
$extension
=
new
NodeExtension
(
$this
->
createMock
(
TemplateFinder::
class
)
,
$this
->
createMock
(
TemplateScopeDetector::
class
)
,
)
;
static
::
assertEmpty
(
$extension
->
getFunctions
(
)
)
;
static
::
assertEmpty
(
$extension
->
getFilters
(
)
)
;
static
::
assertEmpty
(
$extension
->
getNodeVisitors
(
)
)
;
static
::
assertEmpty
(
$extension
->
getOperators
(
)
)
;
static
::
assertEmpty
(
$extension
->
getTests
(
)
)
;
}
}
$this
->extensionSet->
addNodeVisitor
(
$visitor
)
;
}
/** * @return NodeVisitorInterface[] * * @internal */
public
function
getNodeVisitors
(
)
: array
{
return
$this
->extensionSet->
getNodeVisitors
(
)
;
}
public
function
addFilter
(
TwigFilter
$filter
)
{
$this
->extensionSet->
addFilter
(
$filter
)
;
}
/** * @internal */
public
function
getFilter
(
string
$name
)
: ?TwigFilter
{
// token parsers
foreach
(
$extension
->
getTokenParsers
(
)
as
$parser
)
{
if
(
!
$parser
instanceof TokenParserInterface
)
{
throw
new
\
LogicException
(
'getTokenParsers() must return an array of \Twig\TokenParser\TokenParserInterface.'
)
;
}
$this
->parsers
[
$parser
->
getTag
(
)
]
=
$parser
;
}
// node visitors
foreach
(
$extension
->
getNodeVisitors
(
)
as
$visitor
)
{
$this
->visitors
[
]
=
$visitor
;
}
// operators
if
(
$operators
=
$extension
->
getOperators
(
)
)
{
if
(
!\
is_array
(
$operators
)
)
{
throw
new
\
InvalidArgumentException
(
sprintf
(
'"%s::getOperators()" must return an array with operators, got "%s".', \
get_class
(
$extension
)
, \
is_object
(
$operators
)
? \
get_class
(
$operators
)
: \
gettype
(
$operators
)
.
(
\
is_resource
(
$operators
)
? '' : '#'.
$operators
)
)
)
;
}
if
(
2 !== \
count
(
$operators
)
)
{
throw
new
\
InvalidArgumentException
(
sprintf
(
'"%s::getOperators()" must return an array of 2 elements, got %d.', \
get_class
(
$extension
)
, \
count
(
$operators
)
)
)
;
}
return
sprintf
(
'__internal_parse_%d',
$this
->varNameSalt++
)
;
}
public
function
parse
(
TokenStream
$stream
,
$test
= null, bool
$dropNeedle
= false
)
: ModuleNode
{
$vars
=
get_object_vars
(
$this
)
;
unset
(
$vars
[
'stack'
]
,
$vars
[
'env'
]
,
$vars
[
'handlers'
]
,
$vars
[
'visitors'
]
,
$vars
[
'expressionParser'
]
,
$vars
[
'reservedMacroNames'
]
,
$vars
[
'varNameSalt'
]
)
;
$this
->stack
[
]
=
$vars
;
// node visitors
if
(
null ===
$this
->visitors
)
{
$this
->visitors =
$this
->env->
getNodeVisitors
(
)
;
}
if
(
null ===
$this
->expressionParser
)
{
$this
->expressionParser =
new
ExpressionParser
(
$this
,
$this
->env
)
;
}
$this
->stream =
$stream
;
$this
->parent = null;
$this
->blocks =
[
]
;
$this
->macros =
[
]
;
$this
->traits =
[
]
;