summaryrefslogtreecommitdiff
path: root/node_modules/markdown-it/lib/helpers
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
downloadcobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.tar.gz
cobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.tar.bz2
cobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.zip
Initial commit
Diffstat (limited to 'node_modules/markdown-it/lib/helpers')
-rw-r--r--node_modules/markdown-it/lib/helpers/index.js7
-rw-r--r--node_modules/markdown-it/lib/helpers/parse_link_destination.js82
-rw-r--r--node_modules/markdown-it/lib/helpers/parse_link_label.js48
-rw-r--r--node_modules/markdown-it/lib/helpers/parse_link_title.js55
4 files changed, 192 insertions, 0 deletions
diff --git a/node_modules/markdown-it/lib/helpers/index.js b/node_modules/markdown-it/lib/helpers/index.js
new file mode 100644
index 0000000..bfdbfa2
--- /dev/null
+++ b/node_modules/markdown-it/lib/helpers/index.js
@@ -0,0 +1,7 @@
+// Just a shortcut for bulk export
+'use strict';
+
+
+exports.parseLinkLabel = require('./parse_link_label');
+exports.parseLinkDestination = require('./parse_link_destination');
+exports.parseLinkTitle = require('./parse_link_title');
diff --git a/node_modules/markdown-it/lib/helpers/parse_link_destination.js b/node_modules/markdown-it/lib/helpers/parse_link_destination.js
new file mode 100644
index 0000000..637f1f4
--- /dev/null
+++ b/node_modules/markdown-it/lib/helpers/parse_link_destination.js
@@ -0,0 +1,82 @@
+// Parse link destination
+//
+'use strict';
+
+
+var unescapeAll = require('../common/utils').unescapeAll;
+
+
+module.exports = function parseLinkDestination(str, pos, max) {
+ var code, level,
+ lines = 0,
+ start = pos,
+ result = {
+ ok: false,
+ pos: 0,
+ lines: 0,
+ str: ''
+ };
+
+ if (str.charCodeAt(pos) === 0x3C /* < */) {
+ pos++;
+ while (pos < max) {
+ code = str.charCodeAt(pos);
+ if (code === 0x0A /* \n */) { return result; }
+ if (code === 0x3C /* < */) { return result; }
+ if (code === 0x3E /* > */) {
+ result.pos = pos + 1;
+ result.str = unescapeAll(str.slice(start + 1, pos));
+ result.ok = true;
+ return result;
+ }
+ if (code === 0x5C /* \ */ && pos + 1 < max) {
+ pos += 2;
+ continue;
+ }
+
+ pos++;
+ }
+
+ // no closing '>'
+ return result;
+ }
+
+ // this should be ... } else { ... branch
+
+ level = 0;
+ while (pos < max) {
+ code = str.charCodeAt(pos);
+
+ if (code === 0x20) { break; }
+
+ // ascii control characters
+ if (code < 0x20 || code === 0x7F) { break; }
+
+ if (code === 0x5C /* \ */ && pos + 1 < max) {
+ if (str.charCodeAt(pos + 1) === 0x20) { break; }
+ pos += 2;
+ continue;
+ }
+
+ if (code === 0x28 /* ( */) {
+ level++;
+ if (level > 32) { return result; }
+ }
+
+ if (code === 0x29 /* ) */) {
+ if (level === 0) { break; }
+ level--;
+ }
+
+ pos++;
+ }
+
+ if (start === pos) { return result; }
+ if (level !== 0) { return result; }
+
+ result.str = unescapeAll(str.slice(start, pos));
+ result.lines = lines;
+ result.pos = pos;
+ result.ok = true;
+ return result;
+};
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;
+};
diff --git a/node_modules/markdown-it/lib/helpers/parse_link_title.js b/node_modules/markdown-it/lib/helpers/parse_link_title.js
new file mode 100644
index 0000000..051d6f4
--- /dev/null
+++ b/node_modules/markdown-it/lib/helpers/parse_link_title.js
@@ -0,0 +1,55 @@
+// Parse link title
+//
+'use strict';
+
+
+var unescapeAll = require('../common/utils').unescapeAll;
+
+
+module.exports = function parseLinkTitle(str, pos, max) {
+ var code,
+ marker,
+ lines = 0,
+ start = pos,
+ result = {
+ ok: false,
+ pos: 0,
+ lines: 0,
+ str: ''
+ };
+
+ if (pos >= max) { return result; }
+
+ marker = str.charCodeAt(pos);
+
+ if (marker !== 0x22 /* " */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return result; }
+
+ pos++;
+
+ // if opening marker is "(", switch it to closing marker ")"
+ if (marker === 0x28) { marker = 0x29; }
+
+ while (pos < max) {
+ code = str.charCodeAt(pos);
+ if (code === marker) {
+ result.pos = pos + 1;
+ result.lines = lines;
+ result.str = unescapeAll(str.slice(start + 1, pos));
+ result.ok = true;
+ return result;
+ } else if (code === 0x28 /* ( */ && marker === 0x29 /* ) */) {
+ return result;
+ } else if (code === 0x0A) {
+ lines++;
+ } else if (code === 0x5C /* \ */ && pos + 1 < max) {
+ pos++;
+ if (str.charCodeAt(pos) === 0x0A) {
+ lines++;
+ }
+ }
+
+ pos++;
+ }
+
+ return result;
+};