
process_string()
****************

process_string(E)


FUNKTION
========

   string process_string(string str)
   string process_string(closure cl)


BESCHREIBUNG
============

   Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
   durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
   durch einen impliziten Funktionsaufruf.

   Der zu ersetzenden Substring hat die Form:
   @@function[:filename][|argument1|argument2]@@

   Die entsprechende Funktion muss einen String zurueckgeben, oder der
   process_string() uebergebene String str wird nicht modifiziert.

   process_string() arbeitet nicht rekursiv, object_name und argument sind
   optionale Werte.

   Falls eine Closure angegeben wurde, wird diese lediglich gerufen
   und nicht gefiltert.


ANMERKUNGEN
===========

   - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
                 anfangen, '_' ist nicht moeglich!
   - folgendes Properties und Details werden bei der Abfrage ueber
     process_string() gefiltert:
     P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
     P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
   - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
     process_call()


BEISPIEL
========

   // komplette Ersetzung ...
   SetProp(P_LONG,"@@current_long@@");
   ...
   string current_long() {
    if(x) return(break_string("Die Beschreibung."));
    else return(break_string("Die andere Beschreibung."));
   }

   -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."


   // Teilersetzung
   SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
   ...
   string farbenfun(string str) {
    return(str+" "+"gelbes");
   }

   -> bei Abfrage: "Ein huebsch gelbes Ding."


SIEHE AUCH
==========

   notify_fail(E), process_call(E), replace_personal(E)

22. Nov. 2006 Arathorn
