OSSP CVS Repository

ossp - ossp-pkg/var/TODO 1.6
Not logged in
[Honeypot]  [Browse]  [Directory]  [Home]  [Login
[Reports]  [Search]  [Ticket]  [Timeline
  [Raw

ossp-pkg/var/TODO 1.6
                               OSSP var

 - Man braucht ein Schleifenkonstrukt, das über Arrays iteriert:

       [${foo}${bar}]

   Dies wird so interpretiert, daß der Parser an den Variablennamen
   den jeweiligen Index anhängt, und die ganze Zeile expandiert,
   solange, bis _alle_ in dem Konstrukt verwandten Variablen für den
   derzeitigen Index undefiniert sind -- sind nur einzelne Variablen
   undefiniert, werden sie durch den Leerstring "" ersetzt. Text
   innerhalb des Konstrukten wird "verbatim" in jeder Zeile erhalten,
   beispielsweise:

        [${foo}: ${bar}\n]

   Hierzu muß var_expand() wissen, wie sie einen indizierten
   Variablenzugriff erzeugen kann. Hierzu wird var_config_t um
   "char startindex" und "char endindex" erweitert. Weiterhin wird in
   var_config_t "char current_index" ein Zeichen konfiguriert, unter
   dem der aktuelle Index der Schleife zu bekommen ist. Defaults
   werden sein: "[", "]" und "#" respektive.

   Wenn Variablen innerhalb des Konstruktes bereits einen Index haben,
   wird dieser (unter Beachtung eventuell notwendiger Arithmetik)
   berechnet und "fest" verwendet, zum Beispiel:

       [${foo[1]}]

   oder

       [${foo[(#+1)/2]}]

   Dementsprechend sind die folgenden Ausdrück equivalent:

       [${foo[#]}] == [${foo}]

   Wir unterstützen die vier Grundrechenarten, Modulo und Klammerung
   für arithmetische Operationen.

   Weiterhin wird der Callback um einen Parameter "int index"
   erweitert, welchen im Falle eines "normalen Variablenzugriffs" auf
   Null gesetzt wird. Zugriffe auf Indices, die nicht existieren,
   müssen vom Callback mit "UNDEFINED" quittiert werden. Ein Zugriff
   auf einen negativen Index liefert die Anzahl der Elemente in dem
   Array als String zurück. Ebenso liefert das Konstrukt ${foo:#} die
   Anzahl der Elemente zurück, wenn $foo ein Array ist.

   [...]-Konstrukte können beliebig tief geschachtelt werden.

   Innerhalb von Indixangaben dürfen erneut Variablen verwendet
   werden.

   Arrays werden nur in "expressions" erkannt, und im Konstrukt werden
   auch nur "expressions" gesondert behandelt; normale Variablen
   werden in jedem Pass normal expandiert.

   Sind "stardindex", "endindex" oder "current_index" leer (gleich
   '\0'), wird dieses Konstrukt vom Parser nicht erkannt und als Text
   interpretiert -- abgesehen von den Variablen, natürlich, welche
   aber nicht in einer Schleife expandiert werden, noch werden beim
   Callback Array-Elemente abgefragt.

 - Abgabe: 6.12.2001 zum Nikolaustag im CVS.

CVSTrac 2.0.1