[Epydoc-commits] SF.net SVN: epydoc: [1745] trunk/epydoc/src/epydoc/docwriter/dotgraph.py
Brought to you by:
edloper
|
From: <ed...@us...> - 2008-02-23 05:59:56
|
Revision: 1745
http://epydoc.svn.sourceforge.net/epydoc/?rev=1745&view=rev
Author: edloper
Date: 2008-02-22 21:59:54 -0800 (Fri, 22 Feb 2008)
Log Message:
-----------
- Add latex support for dotgraphs
Modified Paths:
--------------
trunk/epydoc/src/epydoc/docwriter/dotgraph.py
Modified: trunk/epydoc/src/epydoc/docwriter/dotgraph.py
===================================================================
--- trunk/epydoc/src/epydoc/docwriter/dotgraph.py 2008-02-23 05:19:30 UTC (rev 1744)
+++ trunk/epydoc/src/epydoc/docwriter/dotgraph.py 2008-02-23 05:59:54 UTC (rev 1745)
@@ -22,6 +22,7 @@
import re
import sys
+import tempfile
from epydoc import log
from epydoc.apidoc import *
from epydoc.util import *
@@ -129,6 +130,32 @@
self.uid = '%s_%s' % (self.uid, n)
self._uids.add(self.uid)
+ def to_latex(self, image_file, language='ps', center=True):
+ # Write the image file.
+ if language == 'ps':
+ self.write(image_file, language='ps')
+ elif language == 'pdf':
+ ps = self._run_dot('-Tps')
+ psfilename = tempfile.mktemp('.ps')
+ psfile = open(psfilename, 'wb')
+ psfile.write('%!PS-Adobe-2.0 EPSF-1.2\n')
+ psfile.write(ps)
+ psfile.close()
+ try: run_subprocess(('ps2pdf', '-dEPSCrop', psfilename,
+ image_file))
+ except RunSubprocessError, e:
+ log.warning("Unable to render Graphviz dot graph (%s):\n"
+ "ps2pdf failed." % self.title)
+ return None
+ else:
+ raise ValueError('Expected language to be "ps" or "pdf"')
+
+ # Generate the latex code to display the graph.
+ name = os.path.splitext(os.path.split(image_file)[-1])[0]
+ s = ' \\includegraphics{%s}\n' % name
+ if center: s = '\\begin{center}\n%s\\end{center}\n' % s
+ return s
+
def to_html(self, image_file, image_url, center=True):
"""
Return the HTML code that should be uesd to display this graph
@@ -633,6 +660,7 @@
successful.
"""
# Use the type string to look up a corresponding ValueDoc.
+ if not hasattr(self.linker, 'docindex'): return False
type_doc = self.linker.docindex.find(type_str, var)
if not type_doc: return False
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|