From d607ac12097afb5cb6f398a4e7b5cf4316efedc6 Mon Sep 17 00:00:00 2001 From: altaf-creator Date: Sun, 12 May 2024 12:14:02 +0700 Subject: self host --- .../lib/helpers/parse_link_label.mjs | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs (limited to 'packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs') diff --git a/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs b/packages/markdown-it-14.1.0/lib/helpers/parse_link_label.mjs new file mode 100644 index 0000000..f1a53fa --- /dev/null +++ b/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 +} -- cgit v1.2.3