MCPcopy
hub / github.com/postcss/postcss / visitTick

Method visitTick

lib/lazy-result.js:474–529  ·  view source on GitHub ↗
(stack)

Source from the content-addressed store, hash-verified

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) {

Callers 1

runAsyncMethod · 0.95

Calls 5

handleErrorMethod · 0.95
toStackFunction · 0.85
toProxyMethod · 0.80
pushMethod · 0.80
getIteratorMethod · 0.80

Tested by

no test coverage detected