summaryrefslogtreecommitdiff
path: root/node_modules/markdown-it/lib/rules_inline/newline.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/rules_inline/newline.js
downloadcobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.tar.gz
cobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.tar.bz2
cobalt-c2aa7bf38fb30de2d04f87f8e7780e4c768ae6b1.zip
Initial commit
Diffstat (limited to 'node_modules/markdown-it/lib/rules_inline/newline.js')
-rw-r--r--node_modules/markdown-it/lib/rules_inline/newline.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/node_modules/markdown-it/lib/rules_inline/newline.js b/node_modules/markdown-it/lib/rules_inline/newline.js
new file mode 100644
index 0000000..9eeead4
--- /dev/null
+++ b/node_modules/markdown-it/lib/rules_inline/newline.js
@@ -0,0 +1,46 @@
+// Proceess '\n'
+
+'use strict';
+
+var isSpace = require('../common/utils').isSpace;
+
+
+module.exports = function newline(state, silent) {
+ var pmax, max, ws, pos = state.pos;
+
+ if (state.src.charCodeAt(pos) !== 0x0A/* \n */) { return false; }
+
+ pmax = state.pending.length - 1;
+ max = state.posMax;
+
+ // ' \n' -> hardbreak
+ // Lookup in pending chars is bad practice! Don't copy to other rules!
+ // Pending string is stored in concat mode, indexed lookups will cause
+ // convertion to flat mode.
+ if (!silent) {
+ if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {
+ if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {
+ // Find whitespaces tail of pending chars.
+ ws = pmax - 1;
+ while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--;
+
+ state.pending = state.pending.slice(0, ws);
+ state.push('hardbreak', 'br', 0);
+ } else {
+ state.pending = state.pending.slice(0, -1);
+ state.push('softbreak', 'br', 0);
+ }
+
+ } else {
+ state.push('softbreak', 'br', 0);
+ }
+ }
+
+ pos++;
+
+ // skip heading spaces for next line
+ while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++; }
+
+ state.pos = pos;
+ return true;
+};