| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /**
- * @import {Info, State} from 'mdast-util-to-markdown'
- * @import {Emphasis, Parents} from 'mdast'
- */
- import {checkEmphasis} from '../util/check-emphasis.js'
- import {encodeCharacterReference} from '../util/encode-character-reference.js'
- import {encodeInfo} from '../util/encode-info.js'
- emphasis.peek = emphasisPeek
- /**
- * @param {Emphasis} node
- * @param {Parents | undefined} _
- * @param {State} state
- * @param {Info} info
- * @returns {string}
- */
- export function emphasis(node, _, state, info) {
- const marker = checkEmphasis(state)
- const exit = state.enter('emphasis')
- const tracker = state.createTracker(info)
- const before = tracker.move(marker)
- let between = tracker.move(
- state.containerPhrasing(node, {
- after: marker,
- before,
- ...tracker.current()
- })
- )
- const betweenHead = between.charCodeAt(0)
- const open = encodeInfo(
- info.before.charCodeAt(info.before.length - 1),
- betweenHead,
- marker
- )
- if (open.inside) {
- between = encodeCharacterReference(betweenHead) + between.slice(1)
- }
- const betweenTail = between.charCodeAt(between.length - 1)
- const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)
- if (close.inside) {
- between = between.slice(0, -1) + encodeCharacterReference(betweenTail)
- }
- const after = tracker.move(marker)
- exit()
- state.attentionEncodeSurroundingInfo = {
- after: close.outside,
- before: open.outside
- }
- return before + between + after
- }
- /**
- * @param {Emphasis} _
- * @param {Parents | undefined} _1
- * @param {State} state
- * @returns {string}
- */
- function emphasisPeek(_, _1, state) {
- return state.options.emphasis || '*'
- }
|