19
19
$ log = [];
20
20
$ traverser ->traverse (
21
21
$ node ,
22
- function ($ node ) use (&$ log ) { $ log [] = ['enter ' , get_class ($ node )]; }
22
+ function ($ node ) use (&$ log ) { $ log [] = ['enter ' , get_class ($ node )]; },
23
+ function ($ node ) use (&$ log ) { $ log [] = ['leave ' , get_class ($ node )]; }
23
24
);
24
25
25
26
Assert::equal ([
26
27
['enter ' , Node \BlockArrayNode::class],
27
28
['enter ' , Node \ArrayItemNode::class],
28
29
['enter ' , Node \LiteralNode::class],
30
+ ['leave ' , Node \LiteralNode::class],
29
31
['enter ' , Node \LiteralNode::class],
32
+ ['leave ' , Node \LiteralNode::class],
33
+ ['leave ' , Node \ArrayItemNode::class],
34
+ ['leave ' , Node \BlockArrayNode::class],
30
35
], $ log );
31
36
32
37
@@ -39,12 +44,15 @@ $traverser->traverse(
39
44
return $ node instanceof Node \ArrayItemNode
40
45
? Neon \Traverser::DontTraverseChildren
41
46
: null ;
42
- }
47
+ },
48
+ function ($ node ) use (&$ log ) { $ log [] = ['leave ' , get_class ($ node )]; }
43
49
);
44
50
45
51
Assert::equal ([
46
52
['enter ' , Node \BlockArrayNode::class],
47
53
['enter ' , Node \ArrayItemNode::class],
54
+ ['leave ' , Node \ArrayItemNode::class],
55
+ ['leave ' , Node \BlockArrayNode::class],
48
56
], $ log );
49
57
50
58
@@ -55,10 +63,29 @@ $traverser->traverse(
55
63
function ($ node ) use (&$ log ) {
56
64
$ log [] = ['enter ' , get_class ($ node )];
57
65
return $ node instanceof Node \ArrayItemNode ? Neon \Traverser::StopTraversal : null ;
58
- }
66
+ },
67
+ function ($ node ) use (&$ log ) { $ log [] = ['enter ' , get_class ($ node )]; }
59
68
);
60
69
61
70
Assert::equal ([
62
71
['enter ' , Node \BlockArrayNode::class],
63
72
['enter ' , Node \ArrayItemNode::class],
64
73
], $ log );
74
+
75
+
76
+
77
+ $ log = [];
78
+ $ traverser ->traverse (
79
+ $ node ,
80
+ null ,
81
+ function ($ node ) use (&$ log ) {
82
+ $ log [] = ['leave ' , get_class ($ node )];
83
+ return $ node instanceof Node \ArrayItemNode ? Neon \Traverser::StopTraversal : null ;
84
+ }
85
+ );
86
+
87
+ Assert::equal ([
88
+ ['leave ' , Node \LiteralNode::class],
89
+ ['leave ' , Node \LiteralNode::class],
90
+ ['leave ' , Node \ArrayItemNode::class],
91
+ ], $ log );
0 commit comments