Mercurial > evolve
view docs/tutorial/mypandocfilters/graphviz-file.py @ 6202:fe8e88ea296d
evolve: use util.unlinkpath() via vfs
Internally vfs.unlinkpath() does the path join and calls util.unlinkpath(). So
the new form is equivalent, just shorter.
This method exists in 4.8, so the new code shouldn't have any compatibility
issues.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Sun, 13 Mar 2022 18:21:57 +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)