view docs/tutorial/mypandocfilters/graphviz-file.py @ 4311:8aa28e68ac44 stable

evolve: detect unresolved conflict during evolve --continue (issue5966) Evolve --continue was ignoring unresolved conflict, proceeding with its operation without any check. This is now fixed. This test case was built and formalized by Matt Harbison and Anton Shestakov.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 21 Dec 2018 13:14: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)