(stack)
| 472 | } |
| 473 | |
| 474 | visitTick(stack) { |
| 475 | let visit = stack[stack.length - 1] |
| 476 | let { node, visitors } = visit |
| 477 | |
| 478 | if (node.type !== 'root' && node.type !== 'document' && !node.parent) { |
| 479 | stack.pop() |
| 480 | return |
| 481 | } |
| 482 | |
| 483 | if (visitors.length > 0 && visit.visitorIndex < visitors.length) { |
| 484 | let [plugin, visitor] = visitors[visit.visitorIndex] |
| 485 | visit.visitorIndex += 1 |
| 486 | if (visit.visitorIndex === visitors.length) { |
| 487 | visit.visitors = [] |
| 488 | visit.visitorIndex = 0 |
| 489 | } |
| 490 | this.result.lastPlugin = plugin |
| 491 | try { |
| 492 | return visitor(node.toProxy(), this.helpers) |
| 493 | } catch (e) { |
| 494 | throw this.handleError(e, node) |
| 495 | } |
| 496 | } |
| 497 | |
| 498 | if (visit.iterator !== 0) { |
| 499 | let iterator = visit.iterator |
| 500 | let child |
| 501 | while ((child = node.nodes[node.indexes[iterator]])) { |
| 502 | node.indexes[iterator] += 1 |
| 503 | if (!child[isClean]) { |
| 504 | child[isClean] = true |
| 505 | stack.push(toStack(child)) |
| 506 | return |
| 507 | } |
| 508 | } |
| 509 | visit.iterator = 0 |
| 510 | delete node.indexes[iterator] |
| 511 | } |
| 512 | |
| 513 | let events = visit.events |
| 514 | while (visit.eventIndex < events.length) { |
| 515 | let event = events[visit.eventIndex] |
| 516 | visit.eventIndex += 1 |
| 517 | if (event === CHILDREN) { |
| 518 | if (node.nodes && node.nodes.length) { |
| 519 | node[isClean] = true |
| 520 | visit.iterator = node.getIterator() |
| 521 | } |
| 522 | return |
| 523 | } else if (this.listeners[event]) { |
| 524 | visit.visitors = this.listeners[event] |
| 525 | return |
| 526 | } |
| 527 | } |
| 528 | stack.pop() |
| 529 | } |
| 530 | |
| 531 | walkSync(node) { |
no test coverage detected