blob: 25a66e23439e9de2af75951eacce58da030de945 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001process_string()
2================
3
4process_string(E)
5
6FUNKTION
7--------
8::
9
10 string process_string(string str)
11 string process_string(closure cl)
12
13BESCHREIBUNG
14------------
15::
16
17 Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
18 durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
19 durch einen impliziten Funktionsaufruf.
20
21 Der zu ersetzenden Substring hat die Form:
22 @@function[:filename][|argument1|argument2]@@
23
24 Die entsprechende Funktion muss einen String zurueckgeben, oder der
25 process_string() uebergebene String str wird nicht modifiziert.
26
27 process_string() arbeitet nicht rekursiv, object_name und argument sind
28 optionale Werte.
29
30 Falls eine Closure angegeben wurde, wird diese lediglich gerufen
31 und nicht gefiltert.
32
33ANMERKUNGEN
34-----------
35::
36
37 - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
38 anfangen, '_' ist nicht moeglich!
39 - folgendes Properties und Details werden bei der Abfrage ueber
40 process_string() gefiltert:
41 P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
42 P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
43 - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
44 process_call()
45
46BEISPIEL
47--------
48::
49
50 // komplette Ersetzung ...
51 SetProp(P_LONG,"@@current_long@@");
52 ...
53 string current_long() {
54 if(x) return(break_string("Die Beschreibung."));
55 else return(break_string("Die andere Beschreibung."));
56 }
57
58 -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
59
60
61 // Teilersetzung
62 SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
63 ...
64 string farbenfun(string str) {
65 return(str+" "+"gelbes");
66 }
67
68 -> bei Abfrage: "Ein huebsch gelbes Ding."
69
70SIEHE AUCH
71----------
72::
73
74 notify_fail(E), process_call(E), replace_personal(E)
75
7622. Nov. 2006 Arathorn
77