cmark

My personal build of CMark ✏️

Commit
70976e9cfa26a83e1cf74cac79e36ba771567b0f
Parent
a56eca884caec58308387acffb9813b75241f0be
Author
John MacFarlane <jgm@berkeley.edu>
Date

Did parseBackslash (used to be parseEscaped).

Diffstat

1 file changed, 9 insertions, 13 deletions

Status File Name N° Changes Insertions Deletions
Modified js/stmd.js 22 9 13
diff --git a/js/stmd.js b/js/stmd.js
@@ -150,8 +150,7 @@ var spnl = function() {
 
 // All of the parsers below try to match something at the current position
 // in the subject.  If they succeed in matching anything, they
-// push an inline element onto the 'inlines' list.  They return the
-// number of characters parsed (possibly 0).
+// return the inline matched, advancing the subject.
 
 // Attempt to parse backticks, adding either a backtick code span or a
 // literal sequence of backticks to the 'inlines' list.
@@ -182,25 +181,22 @@ var parseBackticks = function(inlines) {
 // Parse a backslash-escaped special character, adding either the escaped
 // character, a hard line break (if the backslash is followed by a newline),
 // or a literal backslash to the 'inlines' list.
-var parseEscaped = function(inlines) {
+var parseBackslash = function() {
   var subj = this.subject,
       pos  = this.pos;
   if (subj[pos] === '\\') {
     if (subj[pos + 1] === '\n') {
-      inlines.push({ t: 'Hardbreak' });
       this.pos = this.pos + 2;
-      return 2;
+      return { t: 'Hardbreak' };
     } else if (reEscapable.test(subj[pos + 1])) {
-      inlines.push({ t: 'Str', c: subj[pos + 1] });
       this.pos = this.pos + 2;
-      return 2;
+      return { t: 'Str', c: subj[pos + 1] };
     } else {
       this.pos++;
-      inlines.push({t: 'Str', c: '\\'});
-      return 1;
+      return {t: 'Str', c: '\\'};
     }
   } else {
-    return 0;
+    return null;
   }
 };
 
@@ -449,7 +445,7 @@ var parseLinkLabel = function() {
         this.pos++;
         break;
       case '\\':
-        this.parseEscaped([]);
+        this.parseBackslash();
         break;
       default:
         this.parseString();
@@ -677,7 +673,7 @@ var parseInline = function() {
     res = this.parseNewline();
     break;
   case '\\':
-    res = this.parseEscaped(inlines);
+    res = this.parseBackslash();
     break;
   case '`':
     res = this.parseBackticks(inlines);
@@ -737,7 +733,7 @@ function InlineParser(){
     peek: peek,
     spnl: spnl,
     parseBackticks: parseBackticks,
-    parseEscaped: parseEscaped,
+    parseBackslash: parseBackslash,
     parseAutolink: parseAutolink,
     parseHtmlTag: parseHtmlTag,
     scanDelims: scanDelims,