summaryrefslogtreecommitdiff
path: root/packages/markdown-it-14.1.0/lib/rules_inline/strikethrough.mjs
diff options
context:
space:
mode:
authoraltaf-creator <dev@altafcreator.com>2026-04-30 22:01:53 +0800
committeraltaf-creator <dev@altafcreator.com>2026-04-30 22:01:53 +0800
commitdb1c6676a13798ee57dbac429a1d5045b60356fb (patch)
tree5ff305c09686de50bbcac404c1954e42c26ba494 /packages/markdown-it-14.1.0/lib/rules_inline/strikethrough.mjs
parent97fa8f57fbefcbfa6b3e56c31a1e5b60ef1a9e37 (diff)
quite a big commit
Diffstat (limited to 'packages/markdown-it-14.1.0/lib/rules_inline/strikethrough.mjs')
-rw-r--r--packages/markdown-it-14.1.0/lib/rules_inline/strikethrough.mjs127
1 files changed, 0 insertions, 127 deletions
diff --git a/packages/markdown-it-14.1.0/lib/rules_inline/strikethrough.mjs b/packages/markdown-it-14.1.0/lib/rules_inline/strikethrough.mjs
deleted file mode 100644
index 45f3c1b..0000000
--- a/packages/markdown-it-14.1.0/lib/rules_inline/strikethrough.mjs
+++ /dev/null
@@ -1,127 +0,0 @@
-// ~~strike through~~
-//
-
-// Insert each marker as a separate text token, and add it to delimiter list
-//
-function strikethrough_tokenize (state, silent) {
- const start = state.pos
- const marker = state.src.charCodeAt(start)
-
- if (silent) { return false }
-
- if (marker !== 0x7E/* ~ */) { return false }
-
- const scanned = state.scanDelims(state.pos, true)
- let len = scanned.length
- const ch = String.fromCharCode(marker)
-
- if (len < 2) { return false }
-
- let token
-
- if (len % 2) {
- token = state.push('text', '', 0)
- token.content = ch
- len--
- }
-
- for (let i = 0; i < len; i += 2) {
- token = state.push('text', '', 0)
- token.content = ch + ch
-
- state.delimiters.push({
- marker,
- length: 0, // disable "rule of 3" length checks meant for emphasis
- token: state.tokens.length - 1,
- end: -1,
- open: scanned.can_open,
- close: scanned.can_close
- })
- }
-
- state.pos += scanned.length
-
- return true
-}
-
-function postProcess (state, delimiters) {
- let token
- const loneMarkers = []
- const max = delimiters.length
-
- for (let i = 0; i < max; i++) {
- const startDelim = delimiters[i]
-
- if (startDelim.marker !== 0x7E/* ~ */) {
- continue
- }
-
- if (startDelim.end === -1) {
- continue
- }
-
- const endDelim = delimiters[startDelim.end]
-
- token = state.tokens[startDelim.token]
- token.type = 's_open'
- token.tag = 's'
- token.nesting = 1
- token.markup = '~~'
- token.content = ''
-
- token = state.tokens[endDelim.token]
- token.type = 's_close'
- token.tag = 's'
- token.nesting = -1
- token.markup = '~~'
- token.content = ''
-
- if (state.tokens[endDelim.token - 1].type === 'text' &&
- state.tokens[endDelim.token - 1].content === '~') {
- loneMarkers.push(endDelim.token - 1)
- }
- }
-
- // If a marker sequence has an odd number of characters, it's splitted
- // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the
- // start of the sequence.
- //
- // So, we have to move all those markers after subsequent s_close tags.
- //
- while (loneMarkers.length) {
- const i = loneMarkers.pop()
- let j = i + 1
-
- while (j < state.tokens.length && state.tokens[j].type === 's_close') {
- j++
- }
-
- j--
-
- if (i !== j) {
- token = state.tokens[j]
- state.tokens[j] = state.tokens[i]
- state.tokens[i] = token
- }
- }
-}
-
-// Walk through delimiter list and replace text tokens with tags
-//
-function strikethrough_postProcess (state) {
- const tokens_meta = state.tokens_meta
- const max = state.tokens_meta.length
-
- postProcess(state, state.delimiters)
-
- for (let curr = 0; curr < max; curr++) {
- if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
- postProcess(state, tokens_meta[curr].delimiters)
- }
- }
-}
-
-export default {
- tokenize: strikethrough_tokenize,
- postProcess: strikethrough_postProcess
-}