summaryrefslogtreecommitdiff
path: root/www/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.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 /www/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs
parent97fa8f57fbefcbfa6b3e56c31a1e5b60ef1a9e37 (diff)
quite a big commit
Diffstat (limited to 'www/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs')
-rw-r--r--www/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs49
1 files changed, 49 insertions, 0 deletions
diff --git a/www/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs b/www/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs
new file mode 100644
index 0000000..f1a53fa
--- /dev/null
+++ b/www/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs
@@ -0,0 +1,49 @@
+// Parse link label
+//
+// this function assumes that first character ("[") already matches;
+// returns the end of the label
+//
+
+export default function parseLinkLabel (state, start, disableNested) {
+ let level, found, marker, prevPos
+
+ const max = state.posMax
+ const oldPos = state.pos
+
+ state.pos = start + 1
+ level = 1
+
+ while (state.pos < max) {
+ marker = state.src.charCodeAt(state.pos)
+ if (marker === 0x5D /* ] */) {
+ level--
+ if (level === 0) {
+ found = true
+ break
+ }
+ }
+
+ prevPos = state.pos
+ state.md.inline.skipToken(state)
+ if (marker === 0x5B /* [ */) {
+ if (prevPos === state.pos - 1) {
+ // increase level if we find text `[`, which is not a part of any token
+ level++
+ } else if (disableNested) {
+ state.pos = oldPos
+ return -1
+ }
+ }
+ }
+
+ let labelEnd = -1
+
+ if (found) {
+ labelEnd = state.pos
+ }
+
+ // restore old state
+ state.pos = oldPos
+
+ return labelEnd
+}