UNPKG

@more-markdown/dot-processor

Version:

Plugin for more-markdown to support rendering dot files.

53 lines (45 loc) 1.49 kB
var d3, dagreD3, dot, dotProcessor, markdownItGraph, uuid; markdownItGraph = require('./md_graph'); d3 = require('d3'); dagreD3 = require('dagre-d3'); dot = require('graphlib-dot'); uuid = require('node-uuid'); dotProcessor = function(tokens, graph_template, error_template) { var render; render = dagreD3.render(); return { register: function(mdInstance, postProcessors) { markdownItGraph(tokens).register(mdInstance, function(graphStr) { var e, graph, id; try { graph = dot.read(graphStr); id = "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; if (!graph.isDirected()) { 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 = dotProcessor;