cmark

My personal build of CMark ✏️

Commit
1446dc2c02a73abeeafbb431fea2cabda444a1cb
Parent
4b52529eb964fd1e949ae60e2da70ac3a0db6a9c
Author
John MacFarlane <jgm@berkeley.edu>
Date

Removed makeBlock. Use new Node directly. Initialize more fields.

Diffstat

2 files changed, 9 insertions, 17 deletions

Status File Name N° Changes Insertions Deletions
Modified js/lib/blocks.js 18 3 15
Modified js/lib/node.js 8 6 2
diff --git a/js/lib/blocks.js b/js/lib/blocks.js
@@ -56,18 +56,6 @@ var reHrule = /^(?:(?:\* *){3,}|(?:_ *){3,}|(?:- *){3,}) *$/;
 
 // These are methods of a DocParser object, defined below.
 
-var makeBlock = function(tag, start_line, start_column) {
-    "use strict";
-    var b = new Node(tag);
-    b.pos.start = [start_line, start_column];
-    b.pos.end = [];  // assigned in finalization step
-    b.open = true;
-    b.last_line_blank = false;
-    b.string_content = "";
-    b.strings = [];
-    return b;
-};
-
 // Returns true if parent block can contain child block.
 var canContain = function(parent_type, child_type) {
     "use strict";
@@ -148,7 +136,7 @@ var addChild = function(tag, line_number, offset) {
     }
 
     var column_number = offset + 1; // offset 0 = column 1
-    var newBlock = makeBlock(tag, line_number, column_number);
+    var newBlock = new Node(tag, { start: [line_number, column_number], end: [] });
     this.tip.appendChild(newBlock);
     this.tip = newBlock;
     return newBlock;
@@ -645,7 +633,7 @@ var processInlines = function(block) {
 // The main parsing function.  Returns a parsed document AST.
 var parse = function(input) {
     "use strict";
-    this.doc = makeBlock('Document', 1, 1);
+    this.doc = new Node('Document', { start: [1, 1], end: [] });
     this.tip = this.doc;
     this.refmap = {};
     var lines = input.replace(/\n$/, '').split(/\r\n|\n|\r/);
@@ -665,7 +653,7 @@ var parse = function(input) {
 function DocParser(){
     "use strict";
     return {
-        doc: makeBlock('Document', 1, 1),
+        doc: new Node('Document', { start: [1, 1], end: [] }),
         tip: this.doc,
         refmap: {},
         inlineParser: new InlineParser(),
diff --git a/js/lib/node.js b/js/lib/node.js
@@ -60,14 +60,18 @@ NodeWalker.prototype.next = function(){
     return {entering: entering, node: cur};
 };
 
-function Node(nodeType) {
+function Node(nodeType, pos) {
     this.t = nodeType;
     this.parent = null;
     this.firstChild = null;
     this.lastChild = null;
     this.prev = null;
     this.next = null;
-    this.pos = {};
+    this.pos = pos || {};
+    this.last_line_blank = false;
+    this.open = true;
+    this.strings = [];
+    this.string_content = "";
 }
 
 Node.prototype.isContainer = function() {