UNPKG

@more-markdown/tree-processor

Version:

Plugin for more-markdown to support rendering tree files.

87 lines (84 loc) 1.79 kB
var parseTree; parseTree = function(string, graph) { var addName, addToGraph, brackets, c, count, countName, name, parrent, parrents, pos, prevChar, tempName; brackets = 0; count = 0; parrents = []; tempName = ""; name = ""; countName = ""; parrent = ""; addName = function() { if (!tempName) { return; } name = tempName; tempName = ""; return countName = name + count++; }; addToGraph = function(graph) { var shape; shape = "circle"; if (name === "#" || name === '') { shape = "rect"; name = ""; } graph.setNode(countName, { label: name, shape: shape }); if (parrent) { return graph.setEdge(parrent, countName, { label: "" }); } }; prevChar = ""; pos = 0; while (pos < string.length) { c = string[pos++]; switch (c) { case ' ': if (tempName) { addName(); addToGraph(graph); } break; case '(': brackets++; if (string[pos] === ')') { brackets--; tempName = '#'; addName(); addToGraph(graph); pos++; } else { addName(); addToGraph(graph); parrent = countName; parrents.push(parrent); } break; case ')': brackets--; addName(); if (prevChar !== ')') { addToGraph(graph); } parrents.pop(); parrent = parrents[parrents.length - 1]; break; default: if (c !== '\n') { tempName += c; } } if (c !== ' ') { prevChar = c; } } if (brackets > 0) { return console.log("wrong number of brackets " + brackets); } }; module.exports = parseTree;