コード例 #1
0
def render_dot_html(self, node, code, options, prefix='graphviz',
                    imgcls=None, alt=None):
    try:
        fname, outfn = render_dot(self, code, options, "svg", prefix)
    except GraphvizError, exc:
        self.builder.warn('dot code %r: ' % code + str(exc))
        raise nodes.SkipNode
コード例 #2
0
    def visit_graphviz(self, node):
        dprint()
	fname, filename = graphviz.render_dot(self, node['code'], node['options'],'png')
        self.flush_state()
        width, height = self.get_image_scaled_width_height(node, filename)
        self.docx.picture(filename, '',width, height)
        raise nodes.SkipNode
コード例 #3
0
def render_dot_html(self,
                    node,
                    code,
                    options,
                    prefix='graphviz',
                    imgcls=None,
                    alt=None):
    try:
        fname, outfn = render_dot(self, code, options, "svg", prefix)
    except GraphvizError as exc:
        self.builder.warn('dot code %r: ' % code + str(exc))
        raise nodes.SkipNode

    inline = node.get('inline', False)
    if inline:
        wrapper = 'span'
    else:
        wrapper = 'p'

    self.body.append(self.starttag(node, wrapper, CLASS='graphviz'))
    if fname is None:
        self.body.append(self.encode(code))
    else:
        # inline the svg
        with io.open(outfn, "r", encoding="utf-8") as h:
            data = h.read()
            data = data[data.find("<svg"):]
        os.remove(outfn)
        self.body.append(data)

    self.body.append('</%s>\n' % wrapper)
    raise nodes.SkipNode
コード例 #4
0
ファイル: inheritance_graph.py プロジェクト: lazka/pgi-docgen
def render_dot_html(self, node, code, options, prefix='graphviz',
                    imgcls=None, alt=None):
    try:
        fname, outfn = render_dot(self, code, options, "svg", prefix)
    except GraphvizError as exc:
        self.builder.warn('dot code %r: ' % code + str(exc))
        raise nodes.SkipNode

    inline = node.get('inline', False)
    if inline:
        wrapper = 'span'
    else:
        wrapper = 'p'

    self.body.append(self.starttag(node, wrapper, CLASS='graphviz'))
    if fname is None:
        self.body.append(self.encode(code))
    else:
        # inline the svg
        with io.open(outfn, "r", encoding="utf-8") as h:
            data = h.read()
            data = data[data.find("<svg"):]
        os.remove(outfn)
        self.body.append(data)

    self.body.append('</%s>\n' % wrapper)
    raise nodes.SkipNode
コード例 #5
0
ファイル: writer.py プロジェクト: tg-dyna/sphinx-docxbuilder
 def visit_graphviz(self, node):
     dprint()
     fname, filename = graphviz.render_dot(self, node['code'],
                                           node['options'], 'png')
     self.flush_state()
     width, height = self.get_image_scaled_width_height(node, filename)
     self.docx.picture(filename, '', width, height)
     raise nodes.SkipNode
コード例 #6
0
    def _replace_inheritance_diagram(self, doctree):
        """
        replace inheritance diagrams with images

        Inheritance diagrams are pre-processed and replaced with respective
        images in the processed documentation set. Typically, the node support
        from `sphinx.ext.inheritance_diagram` would be added to the builder;
        however, this extension renders graphs during the translation phase
        (which is not ideal for how assets are managed in this extension).

        Instead, this implementation just traverses for inheritance diagrams,
        generates renderings and replaces the nodes with image nodes (which in
        turn will be handled by the existing image-based implementation).

        Note that the interactive image map is not handled in this
        implementation since Confluence does not support image maps (without
        external extensions).

        Args:
            doctree: the doctree to replace blocks on
        """
        if inheritance_diagram is None:
            return

        # graphviz's render_dot call expects a translator to be passed in; mock
        # a translator tied to our self-builder
        class MockTranslator:
            def __init__(self, builder):
                self.builder = builder

        mock_translator = MockTranslator(self)

        for node in doctree.traverse(inheritance_diagram.inheritance_diagram):
            graph = node['graph']

            graph_hash = inheritance_diagram.get_graph_hash(node)
            name = 'inheritance%s' % graph_hash

            dotcode = graph.generate_dot(name, {}, env=self.env)

            try:
                _, out_filename = render_dot(mock_translator, dotcode, {},
                                             self.graphviz_output_format,
                                             'inheritance')
                if not out_filename:
                    node.parent.remove(node)
                    continue

                new_node = nodes.image(candidates={'?'}, uri=out_filename)
                if 'align' in node:
                    new_node['align'] = node['align']
                node.replace_self(new_node)
            except GraphvizError as exc:
                ConfluenceLogger.warn('dot code {}: {}'.format(dotcode, exc))
                node.parent.remove(node)
コード例 #7
0
ファイル: tocgraph.py プロジェクト: rickbutton/JMTK
def render_dot_html(self,
                    node,
                    code,
                    options,
                    prefix='graphviz',
                    imgcls=None,
                    alt=None):
    try:
        fname, outfn = render_dot(self, code, options, 'svg', prefix)
    except GraphvizError, exc:
        self.builder.warn('dot code %r: ' % code + str(exc))
        raise nodes.SkipNode
コード例 #8
0
def replace_graphviz_nodes(builder, doctree):
    """
    replace graphviz nodes with images

    graphviz nodes are pre-processed and replaced with respective images in the
    processed documentation set. Typically, the node support from
    `sphinx.ext.graphviz` would be added to the builder; however, this extension
    renders graphs during the translation phase (which is not ideal for how
    assets are managed in this extension).

    Instead, this implementation just traverses for graphviz nodes, generates
    renderings and replaces the nodes with image nodes (which in turn will be
    handled by the existing image-based implementation).

    Args:
        builder: the builder
        doctree: the doctree to replace blocks on
    """

    # allow users to disabled implemented extension changes
    restricted = builder.config.confluence_adv_restricted
    if 'ext-graphviz' in restricted:
        return

    if graphviz is None:
        return

    # graphviz's render_dot call expects a translator to be passed in; mock a
    # translator tied to our builder
    class MockTranslator:
        def __init__(self, builder):
            self.builder = builder

    mock_translator = MockTranslator(builder)

    for node in doctree.traverse(graphviz):
        try:
            _, out_filename = render_dot(mock_translator, node['code'],
                                         node['options'],
                                         builder.graphviz_output_format,
                                         'graphviz')
            if not out_filename:
                node.parent.remove(node)
                continue

            new_node = nodes.image(candidates={'?'}, uri=out_filename)
            if 'align' in node:
                new_node['align'] = node['align']
            node.replace_self(new_node)
        except GraphvizError as exc:
            ConfluenceLogger.warn('dot code {}: {}'.format(node['code'], exc))
            node.parent.remove(node)