cmark

My personal build of CMark ✏️

Commit
a0cbcefe82a6bff0a9b44550e22244d6d5d727c0
Parent
3b3c5c9502252a2ce13a7daffa80da2709d586e1
Author
John MacFarlane <jgm@berkeley.edu>
Date

A few changes to JS so its xml matches cmark's.

Always add '' as title property if title is not defined.

Diffstat

2 files changed, 7 insertions, 3 deletions

Status File Name N° Changes Insertions Deletions
Modified js/lib/inlines.js 6 4 2
Modified js/lib/xml.js 4 3 1
diff --git a/js/lib/inlines.js b/js/lib/inlines.js
@@ -232,6 +232,7 @@ var parseAutolink = function(block) {
         dest = m.slice(1, -1);
         node = new Node('Link');
         node.destination = 'mailto:' + encodeURI(unescape(dest));
+        node.title = '';
         node.appendChild(text(dest));
         block.appendChild(node);
         return true;
@@ -239,6 +240,7 @@ var parseAutolink = function(block) {
         dest = m.slice(1, -1);
         node = new Node('Link');
         node.destination = encodeURI(unescape(dest));
+        node.title = '';
         node.appendChild(text(dest));
         block.appendChild(node);
         return true;
@@ -599,7 +601,7 @@ var parseCloseBracket = function(block) {
             this.spnl() &&
             // make sure there's a space before the title:
             (reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&
-             (title = this.parseLinkTitle() || '') || true) &&
+             (title = this.parseLinkTitle()) || true) &&
             this.spnl() &&
             this.subject.charAt(this.pos) === ')') {
             this.pos += 1;
@@ -635,7 +637,7 @@ var parseCloseBracket = function(block) {
     if (matched) {
         var node = new Node(is_image ? 'Image' : 'Link');
         node.destination = dest;
-        node.title = title;
+        node.title = title || '';
 
         var tmp, next;
         tmp = opener.node.next;
diff --git a/js/lib/xml.js b/js/lib/xml.js
@@ -111,7 +111,9 @@ var renderNodes = function(block) {
                 }
                 break;
             case 'CodeBlock':
-                attrs.push(['info', node.info]);
+                if (node.info) {
+                    attrs.push(['info', node.info]);
+                }
                 break;
             case 'Header':
                 attrs.push(['level', String(node.level)]);