MCPcopy
hub / github.com/angular/angular / CombinedRecursiveAstVisitor

Class CombinedRecursiveAstVisitor

packages/compiler/src/combined_visitor.ts:16–160  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14 * Useful for cases where every single node needs to be visited.
15 */
16export class CombinedRecursiveAstVisitor extends RecursiveAstVisitor implements t.RecursiveVisitor {
17 override visit(node: AST | t.Node): void {
18 if (node instanceof ASTWithSource) {
19 this.visit(node.ast);
20 } else {
21 node.visit(this);
22 }
23 }
24
25 visitElement(element: t.Element): void {
26 this.visitAllTemplateNodes(element.attributes);
27 this.visitAllTemplateNodes(element.inputs);
28 this.visitAllTemplateNodes(element.outputs);
29 this.visitAllTemplateNodes(element.directives);
30 this.visitAllTemplateNodes(element.references);
31 this.visitAllTemplateNodes(element.children);
32 }
33
34 visitTemplate(template: t.Template): void {
35 this.visitAllTemplateNodes(template.attributes);
36 this.visitAllTemplateNodes(template.inputs);
37 this.visitAllTemplateNodes(template.outputs);
38 this.visitAllTemplateNodes(template.directives);
39 this.visitAllTemplateNodes(template.templateAttrs);
40 this.visitAllTemplateNodes(template.variables);
41 this.visitAllTemplateNodes(template.references);
42 this.visitAllTemplateNodes(template.children);
43 }
44
45 visitContent(content: t.Content): void {
46 this.visitAllTemplateNodes(content.children);
47 }
48
49 visitBoundAttribute(attribute: t.BoundAttribute): void {
50 this.visit(attribute.value);
51 }
52
53 visitBoundEvent(attribute: t.BoundEvent): void {
54 this.visit(attribute.handler);
55 }
56
57 visitBoundText(text: t.BoundText): void {
58 this.visit(text.value);
59 }
60
61 visitIcu(icu: t.Icu): void {
62 Object.keys(icu.vars).forEach((key) => this.visit(icu.vars[key]));
63 Object.keys(icu.placeholders).forEach((key) => this.visit(icu.placeholders[key]));
64 }
65
66 visitDeferredBlock(deferred: t.DeferredBlock): void {
67 deferred.visitAll(this);
68 }
69
70 visitDeferredTrigger(trigger: t.DeferredTrigger): void {
71 if (trigger instanceof t.BoundDeferredTrigger) {
72 this.visit(trigger.value);
73 } else if (trigger instanceof t.ViewportDeferredTrigger && trigger.options !== null) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…