aboutsummaryrefslogtreecommitdiff
path: root/node_modules/markdown-it/lib/rules_block/paragraph.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/markdown-it/lib/rules_block/paragraph.js')
-rw-r--r--node_modules/markdown-it/lib/rules_block/paragraph.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/node_modules/markdown-it/lib/rules_block/paragraph.js b/node_modules/markdown-it/lib/rules_block/paragraph.js
new file mode 100644
index 00000000..f0c68729
--- /dev/null
+++ b/node_modules/markdown-it/lib/rules_block/paragraph.js
@@ -0,0 +1,52 @@
+// Paragraph
+
+'use strict';
+
+
+module.exports = function paragraph(state, startLine/*, endLine*/) {
+ var content, terminate, i, l, token, oldParentType,
+ nextLine = startLine + 1,
+ terminatorRules = state.md.block.ruler.getRules('paragraph'),
+ endLine = state.lineMax;
+
+ oldParentType = state.parentType;
+ state.parentType = 'paragraph';
+
+ // jump line-by-line until empty one or EOF
+ for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
+ // this would be a code block normally, but after paragraph
+ // it's considered a lazy continuation regardless of what's there
+ if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }
+
+ // quirk for blockquotes, this line should already be checked by that rule
+ if (state.sCount[nextLine] < 0) { continue; }
+
+ // Some tags can terminate paragraph without empty line.
+ terminate = false;
+ for (i = 0, l = terminatorRules.length; i < l; i++) {
+ if (terminatorRules[i](state, nextLine, endLine, true)) {
+ terminate = true;
+ break;
+ }
+ }
+ if (terminate) { break; }
+ }
+
+ content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
+
+ state.line = nextLine;
+
+ token = state.push('paragraph_open', 'p', 1);
+ token.map = [ startLine, state.line ];
+
+ token = state.push('inline', '', 0);
+ token.content = content;
+ token.map = [ startLine, state.line ];
+ token.children = [];
+
+ token = state.push('paragraph_close', 'p', -1);
+
+ state.parentType = oldParentType;
+
+ return true;
+};