de:doc:tools_oobdtemple
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | de:doc:tools_oobdtemple [2014/07/04 09:41] (current) – created wsauer | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== OOBDTemple - Das OOBD Quellkode-Vorlagenwerkzeug ====== | ||
+ | |||
+ | ===== Warum ein weiteres Vorlagenwerkzeug? | ||
+ | Es gibt sicherlich ein Duzend unterschiedliche Vorlagenwerkzeuge, | ||
+ | |||
+ | Wir aber halten Ausschau nach etwas, mit dem wir schreiben und Quellcode testen können wie üblich, dann aber auch zusätzlich Teile innerhalb des Quellkodes zu finden oder zu identifizieren. Diese gleichartigen Teile möchten wir als Vorlage extrahieren, | ||
+ | |||
+ | |||
+ | ===== Das Prinzip ===== | ||
+ | Stell Dir vor Du hast einen Quellcode: | ||
+ | |||
+ | < | ||
+ | |||
+ | overall initialization | ||
+ | |||
+ | some specific variable initialization | ||
+ | |||
+ | a generic doTo loop: | ||
+ | |||
+ | for (i=0 ... | ||
+ | |||
+ | some specific tasks in here | ||
+ | } | ||
+ | |||
+ | specific shutdown | ||
+ | |||
+ | generic shutdown | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | Nun stell Dir vor einige Marker in den Quellkode einzufügen, | ||
+ | |||
+ | < | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | overall initialization | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | some specific variable initialization | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | a generic doTo loop: | ||
+ | |||
+ | for (i=0 ... | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | some specific tasks in here | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | } | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | specific shutdown | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | generic shutdown | ||
+ | |||
+ | //<<<< | ||
+ | </ | ||
+ | |||
+ | Wie Du sehen kannst, werden die generischen Teile immer von einem >>>> | ||
+ | |||
+ | Aber um verschachtelten Vorlagenkode zu erlauben, benötigen die Marker einen Identifizierer der angibt zu welcher Vorlage er gehört. | ||
+ | |||
+ | Nun gehören alle Marker zu der " | ||
+ | |||
+ | < | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | overall initialization | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | some specific variable initialization | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | a generic doTo loop: | ||
+ | |||
+ | for (i=0 ... | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | some specific tasks in here | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | } | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | specific shutdown | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | generic shutdown | ||
+ | |||
+ | //<<<< | ||
+ | </ | ||
+ | |||
+ | |||
+ | Das würde schon so weit funktionieren, | ||
+ | |||
+ | < | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | overall initialization | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | some specific variable initialization | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | a generic doTo loop: | ||
+ | |||
+ | for (i=0 ... | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | some specific tasks in here | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | } | ||
+ | |||
+ | //<<<< | ||
+ | |||
+ | specific shutdown | ||
+ | |||
+ | //>>>> | ||
+ | |||
+ | generic shutdown | ||
+ | |||
+ | //<<<< | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Die oobdtemple Kommandos ===== | ||
+ | Oberhalb dieses Textes haben wir gesehen, wie Quellkode versehen mit Vorlagen-Markern aussieht. Nun lass uns überprüfen wie oobdtemple damit arbeitet: | ||
+ | |||
+ | Zunächst nehmen wir etwas einfaches | ||
+ | |||
+ | ==== oobdtemple --struct : Show template structure ==== | ||
+ | |||
+ | oobdtemple template_name --struct file | ||
+ | |||
+ | Druckt die aktuelle Vorlagenstruktur auf die Standartausgabe in die Datei " | ||
+ | |||
+ | |||
+ | ==== oobdtemple --extract : Extrahiere Vorlage ==== | ||
+ | |||
+ | | ||
+ | |||
+ | Druckt den aktuellen Vorlageninhalt in < | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Nun beginnen wir mit dem Kopieren von Vorlagen aus und in Dateien: | ||
+ | |||
+ | |||
+ | |||
+ | ==== oobdtemple --update : Aktualisieren der Quelldatei ==== | ||
+ | |||
+ | oobdtemple template_name --update sourcefile templatefile | ||
+ | |||
+ | Dies aktualisiert den gegenwärtigen Inhalt von < | ||
+ | |||
+ | |||
+ | ==== oobdtemple --writetemplate : Aktualisieren der Vorlagendatei ==== | ||
+ | |||
+ | oobdtemple template_name --writetemplate sourcefile templatefile | ||
+ | |||
+ | Dies sichert den aktuellen Vorlageninhalt von < | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Dies waren die Kommandos um Dateien zu bewerten oder zu modifizieren. Die nächsten zwei Kommandos sollten in den Make Prozess integriert werden, um sicherzustellen dass die Vorlage zu dem Quellkode passt, mit dem gearbeitet werden soll. | ||
+ | |||
+ | ==== oobdtemple --check : Überprüfe Quellkode und die Beständigkeit der Vorlagendatei | ||
+ | |||
+ | oobdtemple template_name --check sourcefile templatefile | ||
+ | |||
+ | Überprüft, | ||
+ | |||
+ | |||
+ | Aber weil eine Inkonsistenz zwischen dem Quellkode und der Vorlage in der Entwicklungsphase leicht vorkommen kann, gibt es ein spezielles Kommando, welches nur eine Warnung ausgibt und nicht den kompletten Makeprozess abbricht: | ||
+ | |||
+ | ==== oobdtemple --develop : Warnt bei Inkonsistenz zwischen dem Quellkode und der Vorlage ==== | ||
+ | |||
+ | oobdtemple template_name --develop sourcefile templatefile | ||
+ | |||
+ | Ist das gleiche wie --check, aber es schreibt nur Warnungen auf die Standartfehlerausgabe und kommt mit dem Rückgabewert 0 zurück um den Makeprozess nicht abzubrechen | ||
+ | |||
+ | |||
+ | ===== The oobdtemple Struktur Tests ===== | ||
+ | |||
+ | Weil es offensichtlich viel Schaden im Quellkode anrichten kann, wenn man versucht eine Vorlage in diesen zu integrieren der nicht passt, führt oobdtemple ein paar Tests durch, bevor es die Operation durchführt und die beiden Teile verbindet. Wenn einer der Tests negativ ist, wird die Operation unterbrochen und die Dateien bleiben unverändert: | ||
+ | |||
+ | * Auf Dateienebene überprüft oobdtemple | ||
+ | * ob alle Eröffnungsmarker mit ihren Abschlußmarkern korrespondieren | ||
+ | * ob der optional vergebene Name des Eröffnungsmarkers dem des Abschlußmarkers gleicht | ||
+ | * zwischen dem Quellkode und der Vorlage überprüft oobdtemple | ||
+ | * ob die Anzahl der Marker gleich sind | ||
+ | * ob die optional verwendeten Namen zwischen dem Quellkode und der Vorlage gleich sind | ||
de/doc/tools_oobdtemple.txt · Last modified: 2014/07/04 09:41 by wsauer