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