summaryrefslogtreecommitdiff
path: root/node_modules/markdown-it/lib/helpers/parse_link_label.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-01-20 13:43:34 +0100
committerMinteck <contact@minteck.org>2022-01-20 13:43:34 +0100
commitc2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1 (patch)
tree226598e8d17d20e3721358f7c60b1cc6b851163a /node_modules/markdown-it/lib/helpers/parse_link_label.js
downloadcobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.tar.gz
cobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.tar.bz2
cobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.zip
Initial commit
Diffstat (limited to 'node_modules/markdown-it/lib/helpers/parse_link_label.js')
-rw-r--r--node_modules/markdown-it/lib/helpers/parse_link_label.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/node_modules/markdown-it/lib/helpers/parse_link_label.js b/node_modules/markdown-it/lib/helpers/parse_link_label.js
new file mode 100644
index 0000000..5a450fd
--- /dev/null
+++ b/node_modules/markdown-it/lib/helpers/parse_link_label.js
@@ -0,0 +1,48 @@
+// Parse link label
+//
+// this function assumes that first character ("[") already matches;
+// returns the end of the label
+//
+'use strict';
+
+module.exports = function parseLinkLabel(state, start, disableNested) {
+ var level, found, marker, prevPos,
+ labelEnd = -1,
+ max = state.posMax,
+ 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;
+ }
+ }
+ }
+
+ if (found) {
+ labelEnd = state.pos;
+ }
+
+ // restore old state
+ state.pos = oldPos;
+
+ return labelEnd;
+};