Entstehung des Skriptes
Nachdem ich öfters das Problem hatte Dokumente aus Daten zu erzeugen habe ich einige Sachen ausprobiert. Template-basierte Textgenerierer sind häufig nur auf HTML/XML zentriert, ich benötige aber häufig LaTeX.
Skripte die TeX- oder HTML-Dateien erzeugen sind zwar schnell geschrieben, aber in der Regel sehr speziell. Ich suchte etwas, mit dem ich immer wiederkehrende Elemente einfach definieren konnte, ohne mich darum zu kümmern, welches Endformat ich wollte. Im Laufe der Zeit experimentierte ich mit einem Template-System für TeX-Dokumente. Aber irgendwann wurde die Templates so komplex, das mir eine Wartung äußerst schwer fiel.
Für die HTML-Erzeugung stieß ich schließlich auf tag.rb von moonwolf. Allerdings macht es keine Validierung auf erlaubte Tags. So erweiterte ich das Skript, eine Version habe ich im Ruby-Forum veröffentlicht.
Nachdem ich feststellte, das mein HTML-Generierer meine Produktivität in der HTML-Generierung stark verbesserte und sich gleichzeitig meine LaTeX-erzeugenden Skripte immer schlechter wurden, startete ich eine neue Version, die sowohl LaTeX als auch HTML erzeugen kann. Die Schnittstellen sind nicht optimal an HTML oder TeX angepasst, bilden aber einen Kompromiss mit dem ich gut leben konnte. Ich wollte nicht zwei ideale Tools, sondern ein Tool das seine Arbeit macht.
Features von docgenerator
docgenerator erlaubt es in Ruby Dokumente zu definieren, die als HTML oder LaTeX-Dateien gespeichert werden können.
- Wahlweise Output von LaTeX, HTML, Wiki oder Text.
- Weitere Ausgabeformate sind möglich.
- Eine Prüfung auf erlaubte Kommandos wird durchgeführt.
- HTML-Tags werden auf TeX-Makros gemappt (sofern möglich und sinnvoll)
- TeX-Makros werden auf HTML-Tags gemappt (sofern möglich und sinnvoll)
Was docgenerator nicht kann
- Mathe (d.h. kein Formelsatz u.ä.)
- Gedanken lesen und Kaffee kochen.
Auf docgenerator basierende Dokumente und Programme
Nachdem docgenerator lief, entwickelte ich weitere darauf basierende Programme.
Kalendererzeuger
In einem Urlaubs- und Müllkalender bot ich einen Jahresüberblick über Schulferien und Müllabfuhrtermine in Esslingen. Die Erzeugung des Kalenders wurd beschrieben. (Für potentielle Verwender: Inzwischen habe ich verbesserte (naja, zumindest andere) Eingabeformate realisiert).
Auf Stummfilm.info habe ich verschiedene Terminübersichten erzeugt, die Festivalkalender für Stummfilme basieren ebenfalls auf diesem Tool.
Präsentationgenerierer
Dazu gibt es auf dem Linuxtag 2005 eine Präsentation. Details siehe unter Vorträge erzeugen.
Warnung: Inzwischen habe ich die Eingabe erst auf eine Wiki-artige, später auf eine YAML-Schnittstelle geändert. Die Veröffentlichen des Codes steht noch aus.
Wiki2docgenerator
Inzwischen eines meiner am häufigsten genutzten Tools.
Ein Wikitext wird analysiert und in ein docgenerator-Element übersetzt. Anschließen kann es als HTML oder LaTeX-Dokument gespeichert werden.
Das ermöglicht es relativ schnell Texte zu schreiben, die dann in ein Zielformat gespeichert werden können. Durch eine flexible Erweitung des Wiki-Codes sind eigene Makros definierbar.
Die Wikisyntax ist der Syntax von Wikimedia (Wikipedia) angepasst.
Für zukunftige Versionen ist geplant Creole zu unterstützen. Eine englische Vorschau hat es bereits.
Download
Das Programm steht inzwischen als Gem bei Rubyforge zur Verfügung:
Versionen:
- Ohne Versionsnummer: Diverse Versionen (ca. ab 2004)
- 0.1.1 Erste Version als Gem auf Rubyforge.org
Das Programm wird laufend von mir überarbeitet. Hauptänderungen der letzten Zeit:
- to_element ersetzt mit to_doc
- Document.new mit Hash-basierten Zusatzdaten.
- Konsequente Nutzung von Unittest zur Sicherstellung der Programmqualität.
- Weg von Protokollen auf stdout, hin zu einer Logger-basierten Lösung