Ich grüße euch Ubuntuusers,
Ich hab aufgrund eigener Bedürfnisse eine Software geschrieben, die ich euch gerne vorstellen
möchte.
Es handelt sich hierbei um ein Tool, das es ermöglicht aus einem Template, mit eingebettetem Script-Code bzw.
Kommandos und Variablen und mehreren Dateien mit Inhalte, ein Webseitenprojekt mit mehreren HTMLs zu erstellen.
Funktionsweise
Ein Homepage-Projekt, das von dem WebPlodder (so heißt das Programm) bearbeitet werden kann,
muss folgenderweise aussehen:
.
|-- default.template
`-- unterordner
`-- index.page
|-- index2.page
...In dem default.template File befindet sich quasi eine Schablone aus html code,
in den mehrere Befehle bzw. Skripte eingebettet werden, die dann später vom
WebPlodder ersetzt werden.
Die *.page Dateien sind einfache YAML Dateien in denen verschiedene "Variablen"
definiert werden.
Der WebPlodder parst nun also nacheinander sämtliche gefundenen *.page Dateien
und erstellt anhand derer und der Template Datei gleichnamige html Dateien.
In diesen html Dateien ist dann der dynamische Inhalt jeweils anhand der Informationen
in der page Datei ersetzt.
Dynamischer Inhalt
Der dynamische Inhalt in der Template Datei setzt sich aus Kommandos, Variablen und
eingebetteten Skripten zusammen.
Eine dynamische Sequenz wird immer durch eine geschweifte Klammer ('{') eingeleitet und
auch durch eine geschlossene geschweifte Klammer wieder beendet ('}').
Wie schon oben genannt gibt es 3 Arten dieses dynamischen Inhalts.
Zunächst einfache Kommandos.
Kommandos
Die Syntax sieht folgendermaßen aus:
{ Kommando-Name : Argument1, Arg2, ... }
Die Argumente können entweder Strings oder wieder dynamischer Inhalt sein.
Im Falle von Strings, müssen sie in doppelte Hochkommata gesetzt werden:
{ Kommando-Name : "Argument" }
Ein eingebautes Kommando, ist zum Beispiel set
{set : "Var", "Value" }
Es wird verwendet um Variablen zu setzen.
Variablen werden im Folgenden erklärt.
Variablen
Variablen sind einfach Symbole im Kontext, die durch ihren Wert ersetzt werden.
Beispiel:
{$ VarName }
Eingebettete Skripte
Der WebPlodder ist in der Lage eingebettete Skripte zu verarbeiten.
Dafür kann praktisch jede mögliche Skriptsprache verwendet werden, für die ein
Interpreter vorhanden ist und dieser Skripte von der Standardeingabe entgegen nehmen kann.
Im folgenden Beispiel wird die bash verwendet:
Um die Bash zu verwenden, muss sie erst im config-file des WebPlodder registriert werden.
Der WebPlodder gibt die Skripte immer über die Standardeingabe, des Interpreters weiter.
Da die bash das ohne zusätzliche Paramteter beherrscht, genügt folgender Eintrag in config-file:
bash: "bash"
Der Pfad des config-file lautet: $HOME/.webplodder/config.yaml
Ein Beispiel für ein eingebettetes Skript wäre nun:
{!bash
echo "hallo"
!}Wie man deutlich erkennen kann, lautet die Syntax eines engebetteten Skripts folgendermaßen:
{!Configurations_name Skript-Code !}Der WebPlodder exportiert vor der Ausführung eines Skripts, sämtliche zum dem Zeitpunkt vorhandene
Variablen als Umgebungsvariablen.
Das heißt, das Skript kann über Umgebungvariablen auf den Inhalt der aktuellen page Datei
zugreifen.
Alle diese Umgebungsvariablen bekommen alle das Prefix WP_.
Wenn in einer page Datei nun zum Beispiel folgender Code steht:
title: Beispiel-Titel
Dann würde folgender Skript-Code den Beispiel-Titel ausgeben:
{!bash
echo $WP_title
!}Page file
Wie bereits oben gesagt, sind page Dateien einfache yaml Dateien, in denen Variablen definiert
werden.
Ein Beispiel wäre:
# Eine Beispiel page Datei title: Irgendein Titel content: Der Inhalt der Beispiel-Seite variable1: value1 var2: value2
usw.
Laufzeit Optimierungen
Der WebPlodder besitzt 3 Cache Modi, die je nach Prozessor und
Arbeitsspeichertype optimierend wirken können.
Anhand dieser Modi, wird bestimmt wie viel, Daten in den Arbeitsspeicher
geschrieben werden sollen.
Der erste Modi ist non:
Damit werden keine Daten in den Speicher geschrieben, sondern immer nur auf das
Template-File verwiesen.
Bei langsamen Prozessoren kann dies zu Geschwindigkeitsverlust führen.
Der nächste Modi ist script:
Damit werden alle Skripte in den Arbeitsspeicher geschrieben, was bedeutet, dass
je nach nach Anzahl und Größe der eingebetteten Skripte viel Arbeitsspeicher in Anspruch
genommen werden kann.
Der dritte und höchste Modus ist all:
Damit wird praktisch das gesamte Template-File in den Arbeitspeicher ausgelagert.
Hinweis: Die Geschwindigkeitsgewinne unterscheiden sich, je nach Prozessor und
Arbeitsspeichertyp.
Bei schnellen Prozessoren ist praktisch kein Unterschied zu merken.
Außerdem kommt es immer drauf an, wie viele Dateien prozessiert werden müssen und
wie groß das Template-File ist.
Zum Schluss noch
Der WebPlodder ist zwar voll funktionsfähig aber noch in einem frühen Stadium.
Vor allem beim Code-Design ist das zu merken 😀.
Also bitte lieber Quellcode-Leser, erschrecke nicht, das wird sich noch ändern.
Konstruktive Verbesserungsvorschläge sind aber auf jeden Fall willkommen.
Zu haben ist das Projekt auf Google-Code:
http://code.google.com/p/webplodder/
Viel Spaß!
Gruß Domi