UNPKG

@more-markdown/tree-processor

Version:

Plugin for more-markdown to support rendering tree files.

52 lines (44 loc) 1.51 kB
var d3, dagreD3, markdownItGraph, parseTree, treeProcessor, uuid; markdownItGraph = require('./md_graph'); d3 = require('d3'); dagreD3 = require('dagre-d3'); uuid = require('node-uuid'); parseTree = require('./parser'); treeProcessor = function(tokens, graph_template, error_template) { var render; render = dagreD3.render(); return { register: function(mdInstance, postProcessors) { markdownItGraph(tokens).register(mdInstance, function(graphStr) { var e, error, graph, id; try { graph = new dagreD3.graphlib.Graph().setGraph({}); parseTree(graphStr, graph); id = "tree-dg-" + uuid.v4(); postProcessors.registerElemenbById(id, function(elem, done) { var svgElem, svgHeight, tags; d3.select(elem).call(render, graph); svgElem = elem.getElementsByClassName('output')[0]; svgHeight = (svgElem != null ? svgElem.getBoundingClientRect().height : void 0) || 0; elem.style.height = svgHeight + 22; tags = elem.getElementsByTagName('path'); [].forEach.call(tags, function(e) { return e.setAttribute('marker-end', ''); }); return done(); }); return graph_template({ id: id }); } catch (error) { e = error; return error_template({ error: e }); } }); return null; } }; }; module.exports = treeProcessor;