OSSP CVS Repository

ossp - Check-in [1903]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 1903
Date: 2002-Feb-27 12:36:53 (local)
2002-Feb-27 11:36:53 (UTC)
User:rse
Branch:
Comment: update TODO
Tickets:
Inspections:
Files:
ossp-pkg/var/TODO      1.9 -> 1.10     28 inserted, 21 deleted

ossp-pkg/var/TODO 1.9 -> 1.10

--- TODO 2002/01/04 22:31:43     1.9
+++ TODO 2002/02/27 11:36:53     1.10
@@ -1,9 +1,10 @@
                                OSSP var
 
- - Man braucht ein Schleifenkonstrukt, das über Arrays iteriert:
+ o document loop construct
 
+ ---------------------------------------------------------------------
+ - 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
@@ -11,33 +12,23 @@
    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,
@@ -45,24 +36,18 @@
    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.
-
  **** CLARIFICATION ****
 
     <            [ $HOME ${ARRAY} ] 
@@ -129,10 +114,32 @@
         [$foo{#}\n]{1,$#{foo}-1}
         ${empty:p/-/${foo[$#{foo}]:#}/}
         ${foo[$#{foo}]}
+ ---------------------------------------------------------------------
+
+ o manual page style cleanup
 
+ o docs of o1,2 und o1-2 seem to be still incorrect
 
----
+ o add library context and move initialization and configuration
+   into this context.
 
-o manual page style cleanup
-o docs of o1,2 und o1-2 seem to be still incorrect
+ o bugfix?: (thl)
+   habe einen Bug in lib_var gefunden, scheint konzeptioneller Art zu sein.
+   Ich benoetige zwei Passes fuer eine Anwendung, da es zwei verschiedene
+   Arten von Variablen gibt. Eine hat nur Zahlen als gueltigen Namen, die
+   andere Zahlen, Buchstaben, Punkt und Strich. Und die Ergebnisse des
+   ersten Passes koennen die Namen des zweiten beeinflussen, daher muessen
+   es zwei Passes sein. Sollte eigentlich funktionieren, dafuer gibt es die
+   namechars im var_config_t und das force_expand feature. Ich setze also
+   zuerst die namechars auf "0-9" und force_expand auf FALSE, anschliessend
+   die namechars auf  "0-9a-zA-Z.-" und force_expand auf TRUE. Aber bei
+   einem Input von "${0}${abc}" bricht der Parser den ersten Pass bei "abc"
+   mit "failed: incomplete variable" ab! Workaround: gleiche Namespaces,
+   d.h. namechar's, verwenden - aber das ist nicht wirklich die ultimative
+   Loesung.
+
+ o additional feature: functions via callback.
+   ${foo:F<bar>:F<quux>} calls callback for bar with result of foo
+   expansion and then callback for quux with the result returned from
+   bar.
 

CVSTrac 2.0.1