123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- export function containerPhrasing(parent, state, info) {
- const indexStack = state.indexStack
- const children = parent.children || []
-
- const results = []
- let index = -1
- let before = info.before
- indexStack.push(-1)
- let tracker = state.createTracker(info)
- while (++index < children.length) {
- const child = children[index]
-
- let after
- indexStack[indexStack.length - 1] = index
- if (index + 1 < children.length) {
-
-
- let handle = state.handle.handlers[children[index + 1].type]
-
-
- if (handle && handle.peek) handle = handle.peek
- after = handle
- ? handle(children[index + 1], parent, state, {
- before: '',
- after: '',
- ...tracker.current()
- }).charAt(0)
- : ''
- } else {
- after = info.after
- }
-
-
-
-
-
-
- if (
- results.length > 0 &&
- (before === '\r' || before === '\n') &&
- child.type === 'html'
- ) {
- results[results.length - 1] = results[results.length - 1].replace(
- /(\r?\n|\r)$/,
- ' '
- )
- before = ' '
-
- tracker = state.createTracker(info)
- tracker.move(results.join(''))
- }
- results.push(
- tracker.move(
- state.handle(child, parent, state, {
- ...tracker.current(),
- before,
- after
- })
- )
- )
- before = results[results.length - 1].slice(-1)
- }
- indexStack.pop()
- return results.join('')
- }
|