Hello,
Spannender ist für mich immer die Frage, wie weit ich einrücken muss, wenn ich den Code generieren lasse.
Das sollte ich vielleicht bei Funktionen einstellbar machen.
Ich selber rücke z.B. immer nur zwei Zeichen ein. Das stammt noch aus der Zeit, als Bildschirme nicht seitlich scrollen konnten ;-)
Aber jemand, der das richtig[tm] machen will, besteht vielleicht auf den 4 Spalten.
Da habe ich noch kein Rezept gefunden, wie das Script "wissen" kann, in welcher Spalte es beginnen soll.
Entweder ist die vorherige Zeile (und damit auch ihre Einrückung, also Ebenentiefe) bekannt, oder es wird bei Ebene 0 (bzw. n, welches beliebig, aber fest ist) begonnen. Generierter Code erhebt nur dann die Ansprüche auf Menschenlesbarkeit, wenn er anschließend von Menschen weiterverarbeitet werden soll. Für die Wartung ist m.E. lediglich sinnvollerweise nötig, dass jede einzelne Ebene _in sich_ konsistent ist, also dass Start- und End-Tag gleich weit eingerückt sind. Alles weitere halte ich ganz klar für übertrieben.
Man müsste praktisch den Parser oder Validator "rückwärts" nachbauen. :-)
Viel Spaß ;-)
Andere Idee:
Man gibt den Funktionen die aktuelle Spalte als Referenz mit.
Die Funktion selber (z.B. "make_table()" ) weiß ja, wann sie um wieviele Zeichen einrücken musss, relativ zum Beginn. Da muss sie dann also immer nur "$spalte = $spalte + DIFF" und am Ende wieder "$spalte = $spalte - DIFF" rechnen. Bounds sollte man vielleicht sicherheitshalber noch kontrollieren und ggf. richtigstellen. Negative Einrückungen (also vor dem linken Rand des Scriptes) machen sich vielleicht nicht so gut.
Nun die Frage für den Elefanten ...
Sollte man den Wert einfach in $GLOBALS speichern, oder sollte man tatsächlich einen Referenz-Attribut mitschleppen bei jeder Generator-Funktion? Kann es einen Grund geben, mehrere Outputs innerhalb eines Scriptes zu berechnen? Dateiausgabe, Standardausgabe, zwei Frames *g* ?
Da bleibt dann wahrscheinlich ohnehin nur die objektorientierte Aufbereitung.
Ich hätte es aber gerne auch ohne gelöst.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
