Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/efun/terminal_colour b/doc/efun/terminal_colour
new file mode 100644
index 0000000..6cd1bce
--- /dev/null
+++ b/doc/efun/terminal_colour
@@ -0,0 +1,127 @@
+SYNOPSIS
+ varargs string terminal_colour(string str,
+ null | mapping | closure map,
+ int wrap, int indent);
+BESCHREIBUNG
+ Ist <map> ein Wert ungleich 0, ersetzt diese Efun alle Farb-
+ Definitionen der Form "%^KEY%^" (siehe unten fuer Details) im
+ String <str> und ersetzt sie durch die entsprechenden Werte aus dem
+ unter <map> angegebenen Farbschluessel.
+
+ Ist <map> ein Mapping, muessen die Eintraege das Format
+ "KEY" : "wert" haben; Eintraege, die keine Strings enthalten,
+ werden ignoriert. Einzige Ausnahme dazu: enthaelt <map> einen
+ Eintrag der Form 0:wert, wird dieser fuer alle Farbdefinitionen
+ verwendet, die keinem anderen Schluessel zugeordnet werden koennen.
+ <wert> kann in diesem Fall ein String oder eine Closure sein. Handelt
+ es sich um eine Closure, erhaelt diese den <KEY> als Argument und
+ muss einen String zurueck liefern, der <KEY> ersetzt.
+
+ Ist <map> eine Closure, wird diese mit den Farbdefinitionen <KEY>
+ als Argument aufgerufen und muss einen String zurueck liefern, der
+ die <KEY>s ersetzt.
+
+ Die speziellen Schluessel "%^%^" und "%%^^" werden immer durch das
+ Literal "%^" ersetzt.
+
+ Die Parameter <wrap> und <indent> sind optional. Ist nur <wrap>
+ angegeben, wird <str> in der Spalte <wrap> umgebrochen. Ist
+ zusaetzlich <indent> angegeben, werden alle umgebrochenen Zeilen
+ um <indent> Spalten eingerueckt.
+
+ Der Zeilenumbruch ignoriert die Laenge der Farbmakros und ihrer
+ Inhalte. Er bricht <str> anhand der Laenge der uebrigen Zeichen
+ um, ist also farb-neutral.
+
+ Ist <map> als 0 angegeben, fuehrt die Efun kein Suchen und Ersetzen
+ von Farbdefinitionen durch. Die Funktionalitaet von Zeilenumbruch
+ und Einrueckung bleiben erhalten, wenn gewuenscht. Auf diese Weise
+ dupliziert terminal_colour() die Funktion von sprintf("%-=s") und
+ wirkt als einfache Zeilenumbruch Funktion.
+
+
+ ERKENNEN VON FARBDEFINITIONEN
+
+ Wie bereits erwaehnt, werden die speziellen Schluessel "%^%^" und
+ "%%^^" durch das Literal "%^" ersetzt und spielen im Weiteren
+ keine Rolle.
+
+ Fuer den Eingabestring wird das folgende Format vorausgesetzt:
+
+ text { '%^' colorkey '%^' text } [ '%^' colorkey ]
+
+ Oder in Worten: die Efun trennt den String bei jedem '%^', das
+ sie antrifft und behandelt anschliessend jeden zweiten Teilstring
+ als Farbschluessel.
+
+ Merke: dieses Verhalten unterscheidet sich von der Behandlung des
+ Eingabestrings unter MudOS. Dort lautet die Syntax:
+
+ key_oder_text { '%^' key_oder_text }
+
+ Oder in Worten: die MudOS Efun trennt den String bei jedem '%^'
+ und versucht dann jeden Teilstring als Farbschluessel zu behandeln.
+ Dieses Verhalten laesst sich auch unter LPC erreichen:
+
+ string mudos_terminal_colour(string str, mapping ext, int w, int i)
+ {
+ return terminal_colour("%^"+implode(explode(str, "%^")-({""})
+ ,"%^%^")
+ , ext, w, i);
+ }
+
+
+BEISPIELE
+ mapping trans;
+ string str;
+
+ trans = ([ "GREEN" : "ansi-green", "RED" : "", "BLUE" : 1 ]);
+
+ str = terminal_colour( "%^GREEN%^ and %^RED%^ and %^BLUE%^", trans );
+
+ Dies fuehrt zu str == "ansi-green and and BLUE".
+
+ "%^GREEN^%" wird ersetzt durch "ansi-green", weil <trans> das so
+ definiert,
+ "%^RED%^" wird aus <str> entfernt, weil es mit "" ersetzt wird, und
+ "%^BLUE%^" wird um die "%^" verkuert, weil der Eintrag zu BLUE in
+ <trans> keinen gueltigen Wert enthaelt (d.h. kein String ist). Das
+ selbe wuerde passieren, wenn <str> "%^DEFINE%^" enthalten wuerde,
+ zu dem es keinen Eintrag in <trans> gibt.
+
+ Merke: um direkt benachbarte Schluessel zu ersetzen, soll die
+ Efun wie folgt verwendet werden:
+
+ str = terminal_colour( "%^GREEN%^%^RED%^", trans );
+
+ Eine Eingabe der Form
+
+ str = terminal_colour( "%^GREEN%^RED%^", trans );
+
+ fuehrt zum logischen, aber vielleicht unerwarteten Ergebnis
+ "ansi-greenRED".
+
+
+ Einige Worte zum Zeilenumbruch:
+
+ Ein String, der ohne Einrueckung umgebrochen wird (<indent> ist 0),
+ sieht so aus:
+
+ "dies ist die erste Zeile\nund dies ist die zweite Zeile"
+
+ Ein String, der mit <indent> 3 umgebrochen wird, sieht so aus:
+
+ "dies ist die erste Zeile\n und dies ist die zweite Zeile"
+
+AENDERUNGEN
+ Die Idee fuer diese Efun und die erste Implementierung stammen
+ aus MudOS; die Strategie fuer das Erkennen von Schluesseln
+ (eingeschlossen die pure Zeilenumbruch Funktion) wurde in
+ LDMud 3.2.8 geglaettet.
+ LDMud 3.2.9 fuegte die Verwendung von Closures zur Definition
+ von Farbschluesseln hinzu. Es erklaerte zudem offiziell das
+ Verhalten betreffen "%%^^" aus Gruenden besserer Kompatibilitaet
+ mit MudOS.
+
+SIEHE AUCH
+ sprintf(E)