Mercurial > evolve
view docs/tutorial/mypandocfilters/graphviz-file.py @ 6181:e6ae5af97683 mercurial-5.6
test-compat: merge mercurial-5.7 into mercurial-5.6
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Tue, 22 Feb 2022 08:19:44 +0300 |
parents | aad37ffd7d58 |
children |
line wrap: on
line source
#!/usr/bin/env python """ Pandoc filter to process code blocks with class "graphviz" into graphviz-generated images. Needs pygraphviz """ import os import sys import pygraphviz from pandocfilters import toJSONFilter, Para, Image, get_filename4code, get_caption, get_extension, get_value def graphviz(key, value, format, _): if key == 'CodeBlock': [[ident, classes, keyvals], file] = value if "graphviz-file" in classes: caption, typef, keyvals = get_caption(keyvals) prog, keyvals = get_value(keyvals, u"prog", u"dot") filetype = get_extension(format, "svg", html="svg", latex="pdf") with open(file) as f: code = f.read() dest = get_filename4code("graphviz", code, filetype) if not os.path.isfile(dest): g = pygraphviz.AGraph(string=code) g.layout() g.draw(dest, prog=prog) sys.stderr.write('Created image ' + dest + '\n') return Para([Image([ident, ['graphviz'], keyvals], caption, [dest, typef])]) if __name__ == "__main__": toJSONFilter(graphviz)