summaryrefslogtreecommitdiff
path: root/node_modules/markdown-it/lib/rules_inline/backticks.mjs
diff options
context:
space:
mode:
authorShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
committerShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
commit7a52ddeba2a68388b544f529d2d92104420f77b0 (patch)
tree15ddd47457a2cb4a96060747437d36474e4f6b4e /node_modules/markdown-it/lib/rules_inline/backticks.mjs
parent53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff)
Changed from static to 11ty!
Diffstat (limited to 'node_modules/markdown-it/lib/rules_inline/backticks.mjs')
-rw-r--r--node_modules/markdown-it/lib/rules_inline/backticks.mjs60
1 files changed, 60 insertions, 0 deletions
diff --git a/node_modules/markdown-it/lib/rules_inline/backticks.mjs b/node_modules/markdown-it/lib/rules_inline/backticks.mjs
new file mode 100644
index 0000000..5b926d0
--- /dev/null
+++ b/node_modules/markdown-it/lib/rules_inline/backticks.mjs
@@ -0,0 +1,60 @@
+// Parse backticks
+
+export default function backtick (state, silent) {
+ let pos = state.pos
+ const ch = state.src.charCodeAt(pos)
+
+ if (ch !== 0x60/* ` */) { return false }
+
+ const start = pos
+ pos++
+ const max = state.posMax
+
+ // scan marker length
+ while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++ }
+
+ const marker = state.src.slice(start, pos)
+ const openerLength = marker.length
+
+ if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {
+ if (!silent) state.pending += marker
+ state.pos += openerLength
+ return true
+ }
+
+ let matchEnd = pos
+ let matchStart
+
+ // Nothing found in the cache, scan until the end of the line (or until marker is found)
+ while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {
+ matchEnd = matchStart + 1
+
+ // scan marker length
+ while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++ }
+
+ const closerLength = matchEnd - matchStart
+
+ if (closerLength === openerLength) {
+ // Found matching closer length.
+ if (!silent) {
+ const token = state.push('code_inline', 'code', 0)
+ token.markup = marker
+ token.content = state.src.slice(pos, matchStart)
+ .replace(/\n/g, ' ')
+ .replace(/^ (.+) $/, '$1')
+ }
+ state.pos = matchEnd
+ return true
+ }
+
+ // Some different length found, put it in cache as upper limit of where closer can be found
+ state.backticks[closerLength] = matchStart
+ }
+
+ // Scanned through the end, didn't find anything
+ state.backticksScanned = true
+
+ if (!silent) state.pending += marker
+ state.pos += openerLength
+ return true
+}