LanX!: Perlsyntax für HTML nutzen

Beitrag lesen

Hi

ich fummle grad an nem Problem rum das vielleicht etwas exotisch/akademisch ist... :)

Ich möchte Code an eine Funktion übergeben der in der Funktion evaluiert wird. Dabei soll dieser interne Code im Editor entsprechend eingerückt udn gehighlightet werden. Einfach den Code als String zu übergeben reicht also nicht.

Der Bezug zu HTML ergibt sich aus folgendem Beispiel:

seinen table(),tr(),td() subroutinen, dann soll

table("tableopt",
      tr("rowopt",
         td("eintrag11"),
         td("eintrag12"),
         td("eintrag13")
        )
      tr("rowopt",
         td("eintrag21"),
         td("eintrag22"),
         td("eintrag23")
        )

)

dazu führen dass eine Tabelle ausgegeben wird und im Perlcode
sollen die Einrückungen die Struktur des HTML-Codes wiederspiegeln.

In obigem Beispiel werden zuerst die td() evaluiert, dann die
tr() und zuletzt das table()...

Ok damit könnte man leben, mir wäre aber lieber wenn ich in table() lokale variablen setzen könnte die das verhalten der tr() und td() steuern, z.B. sowas wie ein $align="right" das sich vererbt, oder auch ein nachträgliches Anpassen der Zeilen und Spaltenzahl.

(Ich hoffe jmd versteht mich ...)

ein Ansatz wäre z.B.

while (table()){
  tr();
  tr();
};

wobei table() abwechselnd 1 und 0 zurückgibt (über eine globale Variable $table gesteuert), würde also
jeweils einmal vor und nach dem Block ausgeführt.

sub table(){
  $table=1-$table;
  if ($x){
    print "<table>";
  }else{
    print "</table>";
  }
  return $table;
}

2 Probleme:

  • der Block würde nicht im lokalen Namensraum von table laufen
  • man könnte table() nicht schachteln, weil das globale $table
    durcheinanderkäme.

Bevor ich mir weiter das Hirn zermartere, weiß jemand mit ne elegante Lösung???

Tschau
 rolf

PS: Um Missverständnisse zu vermeiden, Table ist nur ein Beispiel, die Funktionen sollen dann schon komplexer sein.