Lpc Manpages

parse()

FUNKTION:
     string parse(string str)
     string parse(string str, mapping replacements)

     ACHTUNG: Diese Funktion ist nur noch aus Kompatibilitaetsgruenden
              vorhanden und nicht mehr aktuell.
              Anstelle von parse() soll die Funktion MakeString()
              verwendet werden.

DEFINIERT IN:
     /std/thing/language.c

ARGUMENTE:
     str
          Der String, der bearbeitet werden soll

     replacements
          Mapping mit selbstdefinierten Ersetzungen (optional)

BESCHREIBUNG:
     Im String str werden die Teilstrings "@@er@@", "@@Er@@", "@@erName@@"
     und "@@ErName@@" sowie ihre deklinierten Formen durch geeignete Strings
     ersetzt. Die eingesetzten Strings beziehen sich dabei immer auf das
     Objekt, in dem die Funktion aufgerufen wird.

     @@er@@
          wird je nach Geschlecht des Objektes durch er, sie oder es
          ersetzt. Entsprechend werden @@sein@@, @@ihm@@, @@ihn@@ durch
          das jeweils passende Pronomen im richtigen Fall ersetzt.

     @@erName@@
          wird durch den Namen des Objekts ersetzt, ebenso @@seinName@@,
          @@ihmName@@, @@ihnName@@ im jeweils passenden Fall.

     Wenn der Anfangsbuchstabe gross geschrieben ist, also z. B. @@IhmName@@,
     dann beginnt der eingesetzte String ebenfalls gross.

     Im Wessen-Fall (Possessiv) muss @@sein@@ bzw. @@seinName@@ ohne Endung
     angegeben werden; wenn eine Endung gewuenscht ist, muss sie "von Hand"
     aussen angehaengt werden, z. B. "@@sein@@e Tasche".

     Als optionales 2. Argument kann ein Mapping mit zusaetzlichen
     Ersetzungen nach dem Muster (["Alter String": "Neuer String"])
     angegeben werden. Dann wird jedes Vorkommen von @@Alter String@@
     durch Neuer String ersetzt. Grundsaetzlich koennen nur solche Strings
     ersetzt werden, die in @@ eingefasst sind. Der alte String ist im Mapping
     ohne "@@" anzugeben.

RUECKGABEWERT:
     der fertige String

BEMERKUNGEN:
     Am Satzanfang muss grundsaetzlich die grossbuchstabige Variante und
     mitten im Satz immer die kleinbuchstabige Variante gewaehlt werden.
     Das gilt auch dann, wenn man @@erName@@ in einem Spieler aufruft, wo
     man nur einen (immer gross geschriebenen) Eigennamen erwartet. Der
     Spieler koennte z. B. "ein Frosch" heissen, oder ein Monster koennte
     anstelle eines Spielers angesprochen werden.

     Als Platzhalter muessen unbedingt die maennlichen Pronomen benutzt
     werden; nur die maskulinen Pronomen erlauben es, alle Faelle eindeutig
     voneinander zu unterscheiden.

BEISPIELE:
     
  1) object opfer;
     opfer->parse( "Das Fallbeil trifft @@ihnName@@. "
                   "Wo hat @@er@@ nur @@sein@@en Kopf?\n" );
     Das ergibt: Das Fallbeil trifft Mupfel. Wo hat er nur seinen Kopf?
           bzw.  Das Fallbeil trifft Marita. Wo hat sie nur ihren Kopf? 

  2) object futter;
     write( futter->parse("Du isst genuesslich @@ihnName@@.\n") );
     
     Das ergibt: Du isst genuesslich einen Kuchen.
           bzw.  Du isst genuesslich eine suesse Torte.

     Haette man versehentlich nur @@ihn@@ geschrieben, waere das Ergebnis:
                 Du isst genuesslich sie.

  3) void init()
     {
       ::init();
       if (!this_player()) return;
       write( "Pass auf, Deine Hose rutscht.\n" );
       say( break_string(
         this_player()->parse(
           "Als Du @@ihnName@@ erblickst und siehst, dass @@ihm@@ "
           "die Hose rutscht, biegst Du Dich vor Lachen." ) ));
     }

SIEHE AUCH:
     MakeString