sphinxcontrib-seqdiag-0.6.0/0000755000175000017500000000000012224001757017236 5ustar katsuwokatsuwo00000000000000sphinxcontrib-seqdiag-0.6.0/PKG-INFO0000644000175000017500000000255312224001757020340 0ustar katsuwokatsuwo00000000000000Metadata-Version: 1.1 Name: sphinxcontrib-seqdiag Version: 0.6.0 Summary: Sphinx "seqdiag" extension Home-page: http://bitbucket.org/birkenfeld/sphinx-contrib Author: Takeshi Komiya Author-email: i.tkomiya@gmail.com License: BSD Download-URL: http://pypi.python.org/pypi/sphinxcontrib-seqdiag Description: This package contains the seqdiag Sphinx extension. .. _Sphinx: http://sphinx.pocoo.org/ .. _seqdiag: http://blockdiag.com/en/seqdiag/ This extension enable you to insert sequence diagrams in your Sphinx document. Following code is sample:: .. seqdiag:: diagram { browser => webserver => database; } This module needs seqdiag_. Platform: any Classifier: Development Status :: 4 - Beta Classifier: Environment :: Console Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Topic :: Documentation Classifier: Topic :: Utilities sphinxcontrib-seqdiag-0.6.0/setup.py0000644000175000017500000000313112224001532020735 0ustar katsuwokatsuwo00000000000000# -*- coding: utf-8 -*- from setuptools import setup, find_packages long_desc = ''' This package contains the seqdiag Sphinx extension. .. _Sphinx: http://sphinx.pocoo.org/ .. _seqdiag: http://blockdiag.com/en/seqdiag/ This extension enable you to insert sequence diagrams in your Sphinx document. Following code is sample:: .. seqdiag:: diagram { browser => webserver => database; } This module needs seqdiag_. ''' requires = ['seqdiag>=0.9.0', 'Sphinx>=0.6', 'setuptools'] setup( name='sphinxcontrib-seqdiag', version='0.6.0', url='http://bitbucket.org/birkenfeld/sphinx-contrib', download_url='http://pypi.python.org/pypi/sphinxcontrib-seqdiag', license='BSD', author='Takeshi Komiya', author_email='i.tkomiya@gmail.com', description='Sphinx "seqdiag" extension', long_description=long_desc, zip_safe=False, classifiers=[ 'Development Status :: 4 - Beta', 'Environment :: Console', 'Environment :: Web Environment', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Topic :: Documentation', 'Topic :: Utilities', ], platforms='any', packages=find_packages(), include_package_data=True, install_requires=requires, namespace_packages=['sphinxcontrib'], ) sphinxcontrib-seqdiag-0.6.0/setup.cfg0000644000175000017500000000014112224001757021053 0ustar katsuwokatsuwo00000000000000[egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 [aliases] release = egg_info -RDb '' sphinxcontrib-seqdiag-0.6.0/sphinxcontrib/0000755000175000017500000000000012224001757022130 5ustar katsuwokatsuwo00000000000000sphinxcontrib-seqdiag-0.6.0/sphinxcontrib/__init__.py0000644000175000017500000000055612223754402024250 0ustar katsuwokatsuwo00000000000000# -*- coding: utf-8 -*- """ sphinxcontrib ~~~~~~~~~~~~~ This package is a namespace package that contains all extensions distributed in the ``sphinx-contrib`` distribution. :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ __import__('pkg_resources').declare_namespace(__name__) sphinxcontrib-seqdiag-0.6.0/sphinxcontrib/seqdiag.py0000644000175000017500000002200712223755012024117 0ustar katsuwokatsuwo00000000000000# -*- coding: utf-8 -*- """ seqdiag.sphinx_ext ~~~~~~~~~~~~~~~~~~~~ Allow seqdiag-formatted diagrams to be included in Sphinx-generated documents inline. :copyright: Copyright 2010 by Takeshi Komiya. :license: BSDL. """ import io import os import posixpath import traceback from collections import namedtuple try: from hashlib import sha1 as sha except ImportError: from sha import sha from docutils import nodes from sphinx.errors import SphinxError from sphinx.util.osutil import ensuredir import seqdiag_sphinxhelper as seqdiag class SeqdiagError(SphinxError): category = 'Seqdiag error' class Seqdiag(seqdiag.utils.rst.directives.SeqdiagDirective): def run(self): try: return super(Seqdiag, self).run() except seqdiag.core.parser.ParseException as e: if self.content: msg = '[%s] ParseError: %s\n%s' % (self.name, e, "\n".join(self.content)) else: msg = '[%s] ParseError: %s\n%r' % (self.name, e, self.arguments[0]) reporter = self.state.document.reporter return [reporter.warning(msg, line=self.lineno)] def node2image(self, node, diagram): return node def get_image_filename(self, code, format, options, prefix='seqdiag'): """ Get path of output file. """ if format.upper() not in ('PNG', 'PDF', 'SVG'): raise SeqdiagError('seqdiag error:\nunknown format: %s\n' % format) if format.upper() == 'PDF': try: import reportlab except ImportError: msg = 'seqdiag error:\n' + \ 'colud not output PDF format; Install reportlab\n' raise SeqdiagError(msg) hashkey = (code + str(options)).encode('utf-8') fname = '%s-%s.%s' % (prefix, sha(hashkey).hexdigest(), format.lower()) if hasattr(self.builder, 'imgpath'): # HTML relfn = posixpath.join(self.builder.imgpath, fname) outfn = os.path.join(self.builder.outdir, '_images', fname) else: # LaTeX relfn = fname outfn = os.path.join(self.builder.outdir, fname) if os.path.isfile(outfn): return relfn, outfn ensuredir(os.path.dirname(outfn)) return relfn, outfn def get_fontmap(self): FontMap = seqdiag.utils.fontmap.FontMap try: fontmappath = self.builder.config.seqdiag_fontmap fontmap = FontMap(fontmappath) except: attrname = '_seqdiag_fontmap_warned' if not hasattr(self.builder, attrname): msg = ('seqdiag cannot load "%s" as fontmap file, ' 'check the seqdiag_fontmap setting' % fontmappath) self.builder.warn(msg) setattr(self.builder, attrname, True) fontmap = FontMap(None) try: fontpath = self.builder.config.seqdiag_fontpath if isinstance(fontpath, seqdiag.utils.compat.string_types): fontpath = [fontpath] if fontpath: config = namedtuple('Config', 'font')(fontpath) _fontpath = seqdiag.utils.bootstrap.detectfont(config) fontmap.set_default_font(_fontpath) except: attrname = '_seqdiag_fontpath_warned' if not hasattr(self.builder, attrname): msg = ('seqdiag cannot load "%s" as truetype font, ' 'check the seqdiag_fontpath setting' % fontpath) self.builder.warn(msg) setattr(self.builder, attrname, True) return fontmap def create_seqdiag(self, code, format, filename, options, prefix='seqdiag'): """ Render seqdiag code into a PNG output file. """ draw = None fontmap = get_fontmap(self) try: tree = seqdiag.core.parser.parse_string(code) diagram = seqdiag.core.builder.ScreenNodeBuilder.build(tree) antialias = self.builder.config.seqdiag_antialias draw = seqdiag.core.drawer.DiagramDraw(format, diagram, filename, fontmap=fontmap, antialias=antialias) except Exception as e: if self.builder.config.seqdiag_debug: traceback.print_exc() raise SeqdiagError('seqdiag error:\n%s\n' % e) return draw def make_svgtag(self, image, relfn, trelfn, outfn, alt, thumb_size, image_size): svgtag_format = """%s """ code = io.open(outfn, 'r', encoding='utf-8-sig').read() return (svgtag_format % (alt, image_size[0], image_size[1], code)) def make_imgtag(self, image, relfn, trelfn, outfn, alt, thumb_size, image_size): result = "" imgtag_format = '%s\n' if trelfn: result += ('' % relfn) result += (imgtag_format % (trelfn, alt, thumb_size[0], thumb_size[1])) result += ('') else: result += (imgtag_format % (relfn, alt, image_size[0], image_size[1])) return result def render_dot_html(self, node, code, options, prefix='seqdiag', imgcls=None, alt=None): trelfn = None thumb_size = None try: format = self.builder.config.seqdiag_html_image_format relfn, outfn = get_image_filename(self, code, format, options, prefix) image = create_seqdiag(self, code, format, outfn, options, prefix) if not os.path.isfile(outfn): image.draw() image.save() # generate thumbnails image_size = image.pagesize() if 'maxwidth' in options and options['maxwidth'] < image_size[0]: thumb_prefix = prefix + '_thumb' trelfn, toutfn = get_image_filename(self, code, format, options, thumb_prefix) ratio = float(options['maxwidth']) / image_size[0] thumb_size = (options['maxwidth'], image_size[1] * ratio) if not os.path.isfile(toutfn): image.filename = toutfn image.save(thumb_size) except UnicodeEncodeError: msg = ("seqdiag error: UnicodeEncodeError caught " "(check your font settings)") self.builder.warn(msg) raise nodes.SkipNode except SeqdiagError as exc: self.builder.warn('dot code %r: ' % code + str(exc)) raise nodes.SkipNode self.body.append(self.starttag(node, 'p', CLASS='seqdiag')) if relfn is None: self.body.append(self.encode(code)) else: if alt is None: alt = node.get('alt', self.encode(code).strip()) if format.upper() == 'SVG': tagfunc = make_svgtag else: tagfunc = make_imgtag self.body.append(tagfunc(self, image, relfn, trelfn, outfn, alt, thumb_size, image_size)) self.body.append('

\n') raise nodes.SkipNode def html_visit_seqdiag(self, node): render_dot_html(self, node, node['code'], node['options']) def render_dot_latex(self, node, code, options, prefix='seqdiag'): try: format = self.builder.config.seqdiag_tex_image_format fname, outfn = get_image_filename(self, code, format, options, prefix) image = create_seqdiag(self, code, format, outfn, options, prefix) if not os.path.isfile(outfn): image.draw() image.save() except SeqdiagError as exc: self.builder.warn('dot code %r: ' % code + str(exc)) raise nodes.SkipNode if fname is not None: self.body.append('\\par\\includegraphics{%s}\\par' % fname) raise nodes.SkipNode def latex_visit_seqdiag(self, node): render_dot_latex(self, node, node['code'], node['options']) def on_doctree_resolved(self, doctree, docname): if self.builder.name in ('gettext', 'singlehtml', 'html', 'latex', 'epub'): return for node in doctree.traverse(seqdiag.utils.rst.nodes.seqdiag): code = node['code'] prefix = 'seqdiag' format = 'PNG' options = node['options'] relfn, outfn = get_image_filename(self, code, format, options, prefix) image = create_seqdiag(self, code, format, outfn, options, prefix) if not os.path.isfile(outfn): image.draw() image.save() candidates = {'image/png': outfn} image = nodes.image(uri=outfn, candidates=candidates) node.parent.replace(node, image) def setup(app): app.add_node(seqdiag.utils.rst.nodes.seqdiag, html=(html_visit_seqdiag, None), latex=(latex_visit_seqdiag, None)) app.add_directive('seqdiag', Seqdiag) app.add_config_value('seqdiag_fontpath', None, 'html') app.add_config_value('seqdiag_fontmap', None, 'html') app.add_config_value('seqdiag_antialias', False, 'html') app.add_config_value('seqdiag_debug', False, 'html') app.add_config_value('seqdiag_html_image_format', 'PNG', 'html') app.add_config_value('seqdiag_tex_image_format', 'PNG', 'html') app.connect("doctree-resolved", on_doctree_resolved) sphinxcontrib-seqdiag-0.6.0/MANIFEST.in0000644000175000017500000000010111571600560020765 0ustar katsuwokatsuwo00000000000000include AUTHORS include LICENSE include README include CHANGES.* sphinxcontrib-seqdiag-0.6.0/README.rst0000644000175000017500000000400312223716543020727 0ustar katsuwokatsuwo00000000000000seqdiag extension README ========================== This is a sphinx extension which render sequence diagrams by using `seqdiag `_ . rendered: .. seqdiag:: diagram { browser => webserver => database; } source: .. code-block:: text .. seqdiag:: diagram { browser => webserver => database; } Setting ======= .. You can see available package at `PyPI `_. You can get archive file at http://bitbucket.org/birkenfeld/sphinx-contrib/ Required components ------------------- * `seqdiag `_ . Install ------- .. code-block:: bash > easy_install sphinxcontrib-seqdiag Configure Sphinx ---------------- To enable this extension, add ``sphinxcontrib.seqdiag`` module to extensions option at :file:`conf.py`. .. code-block:: python import os, sys # Path to the folder where seqdiag.py is # NOTE: not needed if the package is installed in traditional way # using setup.py or easy_install sys.path.append(os.path.abspath('/path/to/sphinxcontrib.seqdiag')) # Enabled extensions extensions = ['sphinxcontrib.seqdiag'] Directive ========= .. describe:: .. seqdiag:: [filename] This directive insert a sequence diagram into the generated document. If filename is specified, sphinx reads external file as source script of blockfile. In another case, seqdiag directive takes code block as source script. Examples:: .. seqdiag:: foobar.diag .. seqdiag:: diagram { // some diagrams are here. } Configuration File Options ========================== .. confval:: seqdiag_fontpath This is a path for renderring fonts. You can use truetype font (.ttf) file path. .. confval:: seqdiag_antialias If :confval:`seqdiag_antialias: is True, seqdiag generates images with anti-alias filter. Repository ========== This code is hosted by Bitbucket. http://bitbucket.org/birkenfeld/sphinx-contrib/ sphinxcontrib-seqdiag-0.6.0/sphinxcontrib_seqdiag.egg-info/0000755000175000017500000000000012224001757025317 5ustar katsuwokatsuwo00000000000000sphinxcontrib-seqdiag-0.6.0/sphinxcontrib_seqdiag.egg-info/PKG-INFO0000644000175000017500000000255312224001757026421 0ustar katsuwokatsuwo00000000000000Metadata-Version: 1.1 Name: sphinxcontrib-seqdiag Version: 0.6.0 Summary: Sphinx "seqdiag" extension Home-page: http://bitbucket.org/birkenfeld/sphinx-contrib Author: Takeshi Komiya Author-email: i.tkomiya@gmail.com License: BSD Download-URL: http://pypi.python.org/pypi/sphinxcontrib-seqdiag Description: This package contains the seqdiag Sphinx extension. .. _Sphinx: http://sphinx.pocoo.org/ .. _seqdiag: http://blockdiag.com/en/seqdiag/ This extension enable you to insert sequence diagrams in your Sphinx document. Following code is sample:: .. seqdiag:: diagram { browser => webserver => database; } This module needs seqdiag_. Platform: any Classifier: Development Status :: 4 - Beta Classifier: Environment :: Console Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Topic :: Documentation Classifier: Topic :: Utilities sphinxcontrib-seqdiag-0.6.0/sphinxcontrib_seqdiag.egg-info/dependency_links.txt0000644000175000017500000000000112224001757031365 0ustar katsuwokatsuwo00000000000000 sphinxcontrib-seqdiag-0.6.0/sphinxcontrib_seqdiag.egg-info/top_level.txt0000644000175000017500000000001612224001757030046 0ustar katsuwokatsuwo00000000000000sphinxcontrib sphinxcontrib-seqdiag-0.6.0/sphinxcontrib_seqdiag.egg-info/not-zip-safe0000644000175000017500000000000111606004201027533 0ustar katsuwokatsuwo00000000000000 sphinxcontrib-seqdiag-0.6.0/sphinxcontrib_seqdiag.egg-info/requires.txt0000644000175000017500000000004512224001757027716 0ustar katsuwokatsuwo00000000000000seqdiag>=0.9.0 Sphinx>=0.6 setuptoolssphinxcontrib-seqdiag-0.6.0/sphinxcontrib_seqdiag.egg-info/SOURCES.txt0000644000175000017500000000065612224001757027212 0ustar katsuwokatsuwo00000000000000AUTHORS LICENSE MANIFEST.in README.rst setup.cfg setup.py sphinxcontrib/__init__.py sphinxcontrib/seqdiag.py sphinxcontrib_seqdiag.egg-info/PKG-INFO sphinxcontrib_seqdiag.egg-info/SOURCES.txt sphinxcontrib_seqdiag.egg-info/dependency_links.txt sphinxcontrib_seqdiag.egg-info/namespace_packages.txt sphinxcontrib_seqdiag.egg-info/not-zip-safe sphinxcontrib_seqdiag.egg-info/requires.txt sphinxcontrib_seqdiag.egg-info/top_level.txtsphinxcontrib-seqdiag-0.6.0/sphinxcontrib_seqdiag.egg-info/namespace_packages.txt0000644000175000017500000000001612224001757031647 0ustar katsuwokatsuwo00000000000000sphinxcontrib sphinxcontrib-seqdiag-0.6.0/AUTHORS0000644000175000017500000000004511571600560020306 0ustar katsuwokatsuwo00000000000000Takeshi KOMIYA sphinxcontrib-seqdiag-0.6.0/LICENSE0000644000175000017500000000261211571600560020245 0ustar katsuwokatsuwo00000000000000If not otherwise noted, the extensions in this package are licensed under the following license. Copyright (c) 2009 by the contributors (see AUTHORS file). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.