| 256 | } |
| 257 | |
| 258 | export class RecursiveVisitor implements Visitor { |
| 259 | constructor() {} |
| 260 | |
| 261 | visitElement(ast: Element, context: any): any { |
| 262 | this.visitChildren(context, (visit) => { |
| 263 | visit(ast.attrs); |
| 264 | visit(ast.directives); |
| 265 | visit(ast.comments); |
| 266 | visit(ast.children); |
| 267 | }); |
| 268 | } |
| 269 | |
| 270 | visitAttribute(ast: Attribute, context: any): any {} |
| 271 | visitStartTagComment(ast: StartTagComment, context: any): any {} |
| 272 | visitText(ast: Text, context: any): any {} |
| 273 | visitComment(ast: Comment, context: any): any {} |
| 274 | |
| 275 | visitExpansion(ast: Expansion, context: any): any { |
| 276 | return this.visitChildren(context, (visit) => { |
| 277 | visit(ast.cases); |
| 278 | }); |
| 279 | } |
| 280 | |
| 281 | visitExpansionCase(ast: ExpansionCase, context: any): any {} |
| 282 | |
| 283 | visitBlock(block: Block, context: any): any { |
| 284 | this.visitChildren(context, (visit) => { |
| 285 | visit(block.parameters); |
| 286 | visit(block.children); |
| 287 | }); |
| 288 | } |
| 289 | |
| 290 | visitBlockParameter(ast: BlockParameter, context: any): any {} |
| 291 | |
| 292 | visitLetDeclaration(decl: LetDeclaration, context: any) {} |
| 293 | |
| 294 | visitComponent(component: Component, context: any) { |
| 295 | this.visitChildren(context, (visit) => { |
| 296 | visit(component.attrs); |
| 297 | visit(component.comments); |
| 298 | visit(component.children); |
| 299 | }); |
| 300 | } |
| 301 | |
| 302 | visitDirective(directive: Directive, context: any) { |
| 303 | this.visitChildren(context, (visit) => { |
| 304 | visit(directive.attrs); |
| 305 | }); |
| 306 | } |
| 307 | |
| 308 | private visitChildren( |
| 309 | context: any, |
| 310 | cb: (visit: <V extends Node>(children: V[] | undefined) => void) => void, |
| 311 | ) { |
| 312 | let results: any[][] = []; |
| 313 | let t = this; |
| 314 | function visit<T extends Node>(children: T[] | undefined) { |
| 315 | if (children) results.push(visitAll(t, children, context)); |
nothing calls this directly
no outgoing calls
no test coverage detected
searching dependent graphs…