--- SPEC 2001/11/11 12:40:42 1.1
+++ SPEC 2001/11/16 15:19:14 1.2
@@ -1,6 +1,6 @@
- Name:
-
+
OSSP var (Variable Expansion Library)
- Description:
@@ -18,38 +18,34 @@
- Eine Variable kann im Text in der Form $name oder ${name} angegeben
werden, wobei die Wahl der Klammern '{' '}' und des '$'
parametriesiert werden können.
-
+
- Gültige Zeichen für einen Variablennamen sind konfigurierbar.
Garbage in -- garbage out.
-
+
- Ein echtes '$'-Zeichen im Text kann durch Voranstellung eines
wählbaren Escapezeichen dargestellt werden. Default ist der
Backslash ('\').
-
+
- Der Aufrufer der Funktion soll steuern können, wie sich die Library
verhält, wenn eine Variable nicht existiert. Denkbar sind:
-
+
- Abbruch mit Fehler,
- die Variable wird zu "", oder
- der Ausdruck wird unverändert in den Ausgabetext übernommen,
sodaß eventuell ein zweiter Pass gemacht werden kann.
-
+
- ${parameter:-word} wird normal expandiert. Wenn "parameter" leer
ist, wird stattdessen "word" eingesetzt.
-
- - ${parameter:?word} wird normal expandiert. Wenn "parameter" leer
- ist, bricht die Verarbeitung mit Fehler ab und "word" wird als
- Begründung zurückgegeben.
-
+
- ${parameter:+word} substituiert die Expansion von "${word}" wenn
"parameter" nicht leer ist, sonst wird "" substituiert.
-
+
- ${parameter:o<start>-}, ${parameter:o<start>-<end>}
-
+
- ${parameter:o<start>,}, ${parameter:o<start>,<length>}
-
+
- ${parameter:#} expandiert zur Länge des Inhaltes von "parameter".
-
+
- ${parameter:s/pattern/string/[gti]} expandiert "parameter" und
führt dann eine Ersetzung mittels des regulären Ausdrucks "pattern"
durch. Wird das 'g'-Flag angegeben, wird nicht nur eine Instanz von
@@ -57,25 +53,25 @@
signalisiert, daß eine reine Text-Ersetzung ohne Unterstützung von
regulären Ausdrücken gewünscht ist. Das 'i'-Flag besagt, daß die
Suche nach "pattern" case-insensitiv durchgeführt wird.
-
+
- ${parameter:y/ochars/nchars/} expandiert den Inhalt von "parameter"
und transformiert dabei nach dem Prinzip von tr(1) die "ochars" im
Text zu "nchars".
-
+
- ${parameter:l} wandelt den Inhalt von "parameter" in
Kleinbuchstaben, bevor es die Variable expandiert. Dies geschieht
über toupper(3).
-
+
- ${parameter:u} wandelt den Inhalt von "parameter" in
Großbuchstaben, bevor es die Variable expandiert. Dies geschieht
über tolower(3).
-
+
- ${parameter:*word} expandiert zum leeren Wort, wenn "parameter"
nicht leer ist, sonst zu "word".
-
+
- Jedes Vorkommen eines der folgenden Konstrukte im Text wird durch
das zugehörige Sonderzeichen ersetzt.
-
+
\t tab
\n newline
\r return
@@ -88,7 +84,7 @@
von <align> ("r" = right, "l" = left, "c" = center) noch fehlende
Zeichen mit <string> aufgefuellt werden. Diest ist gedacht, um in
Templates saubere Tabellen erzeugen zu koennen.
- Beispiele (foo="bar"):
+ Beispiele (foo="bar"):
"${foo:p/6/./r}" -> "bar..."
"${foo:p/6/./l}" -> "...bar"
"${foo:p/6/./c}" -> ".bar.." (oder "..bar.", egal)
@@ -97,26 +93,26 @@
- API (var.h):
| int (*var_cb_t)(void *context,
- | const char *varname,
+ | const char *varname,
| size_t name_len,
- | char *const *data,
- | size_t *data_len,
+ | char *const *data,
+ | size_t *data_len,
| char *malloced_buffer);
- |
+ |
| typdef struct {
| char varinit;
| char startdelim;
- | char enddelim;
- | char escape;
- | char* namechars;
+ | char enddelim;
+ | char escape;
+ | char* namechars;
| char force_expand;
| } var_config_t;
- |
+ |
| extern const var_config_t var_config_default;
- |
- | int var_expand(const char *input,
+ |
+ | int var_expand(const char *input,
| size_t input_len,
- | char **result,
+ | char **result,
| size_t *result_len,
| const char **error_msg,
| varexp_lookup_cb lookup,
@@ -127,7 +123,7 @@
Makefile ..... build procedure (minimal only!)
var.ac ....... Autoconf macro OSSP_VAR
- var.h ........ OSSP var public API
+ var.h ........ OSSP var public API
var.c ........ OSSP var implementation
var.pod ...... OSSP var manual page
var_test.c ... OSSP var test suite
|