mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-02 21:49:31 +08:00
43 lines
1.1 KiB
Text
43 lines
1.1 KiB
Text
/**
|
||
* @typedef {import('mdast').Strong} Strong
|
||
* @typedef {import('../types.js').Handle} Handle
|
||
*/
|
||
|
||
import {checkStrong} from '../util/check-strong.js'
|
||
import {containerPhrasing} from '../util/container-phrasing.js'
|
||
import {track} from '../util/track.js'
|
||
|
||
strong.peek = strongPeek
|
||
|
||
// To do: there are cases where emphasis cannot “form” depending on the
|
||
// previous or next character of sequences.
|
||
// There’s no way around that though, except for injecting zero-width stuff.
|
||
// Do we need to safeguard against that?
|
||
/**
|
||
* @type {Handle}
|
||
* @param {Strong} node
|
||
*/
|
||
export function strong(node, _, context, safeOptions) {
|
||
const marker = checkStrong(context)
|
||
const exit = context.enter('strong')
|
||
const tracker = track(safeOptions)
|
||
let value = tracker.move(marker + marker)
|
||
value += tracker.move(
|
||
containerPhrasing(node, context, {
|
||
before: value,
|
||
after: marker,
|
||
...tracker.current()
|
||
})
|
||
)
|
||
value += tracker.move(marker + marker)
|
||
exit()
|
||
return value
|
||
}
|
||
|
||
/**
|
||
* @type {Handle}
|
||
* @param {Strong} _
|
||
*/
|
||
function strongPeek(_, _1, context) {
|
||
return context.options.strong || '*'
|
||
}
|