33 lines
791 B
JavaScript
33 lines
791 B
JavaScript
/**
|
||
* @typedef {import('mdast').Break} Break
|
||
* @typedef {import('mdast').Parents} Parents
|
||
* @typedef {import('../types.js').Info} Info
|
||
* @typedef {import('../types.js').State} State
|
||
*/
|
||
|
||
import {patternInScope} from '../util/pattern-in-scope.js'
|
||
|
||
/**
|
||
* @param {Break} _
|
||
* @param {Parents | undefined} _1
|
||
* @param {State} state
|
||
* @param {Info} info
|
||
* @returns {string}
|
||
*/
|
||
export function hardBreak(_, _1, state, info) {
|
||
let index = -1
|
||
|
||
while (++index < state.unsafe.length) {
|
||
// If we can’t put eols in this construct (setext headings, tables), use a
|
||
// space instead.
|
||
if (
|
||
state.unsafe[index].character === '\n' &&
|
||
patternInScope(state.stack, state.unsafe[index])
|
||
) {
|
||
return /[ \t]/.test(info.before) ? '' : ' '
|
||
}
|
||
}
|
||
|
||
return '\\\n'
|
||
}
|