Mercurial > evolve
view docs/tutorial/mypandocfilters/graphviz-file.py @ 4392:c09889f81947
test-split: split now ignores diff.* settings
From 66399f2e92aa: "It is assumed by the author that the `[diff]` section is
primarily for *viewing* diffs, and that it is unlikely what people intend when
attempting to commit or revert."
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Thu, 07 Feb 2019 16:24:59 +0800 |
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)