mikitex70 a19f7f49f2 added plantuml_rst plugin преди 10 години
..
Readme.rst a19f7f49f2 added plantuml_rst plugin преди 10 години
__init__.py a19f7f49f2 added plantuml_rst plugin преди 10 години
plantuml_rst.py a19f7f49f2 added plantuml_rst plugin преди 10 години

Readme.rst

PlantUML plugin for Pelican rst documents
=========================================

This plugin allows you to define UML diagrams directly into rst documents using the great
PlantUML_ tool.

This plugin gets the content of ``uml`` directive, passes it to the external
program PlantUML_ and then links the generated image to the document.

Installation
------------

You need to install PlantUML_ (see the site for details) and Graphviz_ 2.26.3 or later.
The plugin expects a program ``plantuml`` in the classpath. If not installed by your package
manager, you can create a shell script and place it somewhere in the classpath. For example,
save te following into ``/usr/local/bin/plantuml`` (supposing PlantUML_ installed into
``/opt/plantuml``):

.. code-block:: bash

#!/bin/bash
java -jar /opt/plantuml/plantuml.jar ${@}

For Gentoo_ there is an ebuild at http://gpo.zugaina.org/dev-util/plantuml/RDep: you can download
the ebuild and the ``files`` subfolder or you can add the ``zugaina`` repository with _layman
(raccomended).

Usage
-----

Add ``plantuml`` to plugin list in ``pelicanconf.py``. For example:

.. code-block:: ptyhon

PLUGINS = [ "sitemap", "plantuml" ]

Use the ``uml`` directive to start UML diagram description. It is not necessary to enclose
diagram body between ``@startuml`` and ``@enduml`` directives: they are added automatically
before calling ``plantuml``.

In addition to ``class`` and
``alt`` options common to all images, you can use the ``format`` option to select what kind
of image must be produced. At the moment only ``png`` and ``svg`` are supported; the default
is ``png``.

Please note that the ``format`` option in not recognized by the ``plantuml`` extension of
``rst2pdf`` utility (call it with ``-e plantuml.py``) so if you use it you can get errors from
that program.

Examples
--------

Sequence diagram (from PlantUML_ site):

.. code-block:: rst

.. uml::

participant User

User -> A: DoWork
activate A #FFBBBB

A -> A: Internal call
activate A #DarkSalmon

A -> B: << createRequest >>
activate B

B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A

Output:

.. image:: http://plantuml.sourceforge.net/imgp/sequence_022.png

Another example from PlantUML_ site (activity diagram):

.. code-block:: rst

.. uml::

start
:ClickServlet.handleRequest();
:new page;
if (Page.onSecurityCheck) then (true)
:Page.onInit();
if (isForward?) then (no)
:Process controls;
if (continue processing?) then (no)
stop
endif

if (isPost?) then (yes)
:Page.onPost();
else (no)
:Page.onGet();
endif
:Page.onRender();
endif
else (false)
endif

if (do redirect?) then (yes)
:redirect process;
else
if (do forward?) then (yes)
:Forward request;
else (no)
:Render page template;
endif
endif

stop

Generated image:

.. image:: http://plantuml.sourceforge.net/imgp/activity2_009.png



.. _PlantUML: http://plantuml.sourceforge.net
.. _Sabayon: http://www.sabayon.org
.. _Gentoo: http://www.gentoo.org
.. _layman: http://wiki.gentoo.org/wiki/Layman
.. _Graphviz: http://www.graphviz.org