12.012012

ditaa: Ein Bild sagt mehr als 1000 Worte…

Was ist ditaa?

ditaa erzeugt aus ascii art Diagrammen Bitmapgraphiken; es unterstützt eine ausreichende Anzahl an Gestaltungsmöglichkeiten, um es zur Dokumentation in Softwareprojekten einsetzen zu können, und etwa Klassen- oder Ablaufdiagramme direkt im Code als Kommentare einzubetten. Die Information ist dort verfügbar, wo sie benötigt wird, wenn sie benötigt wird; und doch sieht sie, wenn es darauf ankommt – in der generierten HTML oder PDF Dokumentation – gut aus.

Ein Beispiel: tangling einer org-mode-Datei

Das folgende Diagramm veranschaulicht den Prozess, aus einer org-mode Quelldatei eine zsh-Konfiguration zu erstellen, und die möglichen Interaktionswege der generierten Dateien (in vereinfachter Form).

                                                               /---------------+
                                                               | ~/.zshrc      |
                                                               |               +-=-------
                                                      /------->|               |         |
                                                      |        |               |         |
                                                      |        |               |         |
/----------------+              /----------------+    |        |               |         |
| Quelltext      |              | emacs          |    |        | cDB6      {d} |         |
| zshrc.org      |              | org babel      |    |        +---------------+         |
|                +------------->|                +----+                                  |
|                |              |                |    |        /---------------+         |
|                |              |                |    |        | ~/.zsh.d/lib/ |         |
| cYEL      {d}  |              |            {tr}|    |        |     git_alias |         |
+----------------+              +----------------+    +------->|               |<*=-    |
                                                      |        |               |    |    |
                                                      |        |               |    |    |
                                                      |        | cDB0      {d} |    |    |
                                                      |        +---------------+    |    |
                                                      |                             |    |
                                                      |        /---------------+    |    |
                                                      |        | ~/.zsh.d/     |----/    |
                                                      |        |     host_1    |         |
      ------->  input/output                          |        |               |         |
      -=----->  sources                               ------->|               |         |
      -=----*>  might source                                   |               |<--------/
                                                               | cDB4      {d} |
                                                               +---------------+ 

http://www.joocom.de/blog/wp-content/uploads/wpid-ditaa_example6.png

Fazit

ditaa verarbeitet aktuell mehr Eingaben, als auf der sourceforge-Seite dokumentiert sind. Ein erweitertes Beispiel, mit interaktivem Webservice zur Erstellung von Diagrammen ist unter ditaa.org zu finden.

org-mode, der Emacs Modus, unterstützt ditaa nativ und Emacs bringt mit artist-mode eine für die Erstellung von Diagrammen äußerst hilfreiche Umgebung mit; ditaa selbst stellt mit der -h Option den html-Modus zur Verfügung, der in html-Dateien eingebette Diagramme (<pre class="textdiagram">...</pre>) durch img-Tags auf die generierten Bitmaps ersetzt.

Sicherlich gibt es einfache Wege, ditaa zu verwirren, hie' und da wird man viel überlegen müssen, wie man das Diagramm in ASCII nun aufbauen muss, damit die graphische Ausgabe die gewünschte Bedeutung transportiert.

Trotzdem ist ditaa ein wertvolles Werkzeug, dass ich in meiner Werkzeugkiste nicht mehr missen möchte.