Das Wiki unterscheidet intern verschiedene String-Typen.
Für die Umwandlung der verschiedenen Formate existiert eine Reihe von entsprechenden Funktionen, die nachfolgend aufgelistet sind:
Alle unten aufgeführten Konvertierungsfunktionen haben die folgende Syntax:
targetStr = Convert( sourceStr )
Text Wiki-Text (MaskSpecChars)
Wiki-Text Text (UnMaskSpecChars)
Wenn in Text Links oder Makros eingebunden werden soll, müssen Spezialzeichen (Steuerzeichen) innerhalb des Textes mit \ maskiert werden, damit sich nicht mit den entsprechenden Zeichen kollidieren, die als Steuerzeichen in Makros und Links verwendet werden. Mit MaskSpecChars werden alle Sonderzeichen mit einem \ davor maskiert. Die Funktionen PreprocWikiText, PreprocLink und EncodeEscChars verwandeln so maskierte Sonderzeichen in spezielle Zeichensequenzen, die nicht mit den Steuerzeichen kollidieren. Nach der Verarbeitung des Textes werden diese Zeichensequenzen wieder in ihre ursprünglichen Sonderzeichen (ohne ) verwandelt.
Insbesondere in Texten, die an Formular-Makros übergeben werden, müssen Sonderzeichen maskiert werden. Dazu gibt es auch die Funktion FormString, welche in WScripts anwendung findet.
UnMaskSpecCahrs ist die eineindeutige Umkehrfunktion von MaskSpecChars.
Wiki-Text Intern-Text
Codieret alle mit \ maskierten Spezialzeichen durch spezielle Zeichenfolgen $@xx, wobei xx eine zweistellige Zahl ist. Dadurch wird verhindert, dass das Wiki die entsprechenden Zeichen hinter dem \ als Steuerzeichen interpretiert. Vor der Ausgabe oder Weiterverwendung als Namen werden die $@xx vom Wiki in die enstprechenden Spezialzeichen zurückgewandelt (DecodeEscChars, DecodeName).
EncodeEscChars wird intern von den Funktionen PreprocWikiText und PreprocLink gerufen.
Die nicht eineindeutige Umkehrfunktion ist UnEncodeEscChars. EncodeEscChars kann mehrfach auf denselben Text angewandt werden, da sie nicht eineindeutig umkehrbar ist. Das bedeutet, dass es keine unerwünschten Nebeneffekte gibt, wenn derselbe Text an mehreren Stellen (z.B. in Wscripts und intern im Wiki) mehrmals encodet wird. Was schon encodet ist, bleibt encodet, was noch nicht encodet ist, wird encodet.
Intern-Text Wiki-Text
Umkehrfunktion zu EncodeEscChars.
Intern-Text HTML-Text
Diese Funktion ist eine Kombination von UnEncodeEscChars und UnMaskSpecChars, wobei aber zusätzlich einige Zeichen im Gegensatz zu DecodeName in benannte HTML-Zeichen wie > für > verwandelt werden.
Name Intern-Text (EncodeSpecChars)
Intern-Text Name (UnEncodeSpecChars)
Die Funktion EncodeSpecChars makiert Spezialzeichen mit \ und Codiert das Resultat mit EncodeEscChars in ein internes Format. Die nicht eineindeutige Umkehrfunktion ist UnEncodeSpecChars.
Name → MaskSpecChars → EncodeEscChars → Intern-Text
Intern-Text → UnEncodeEscChars → UnMaskSpecChars → Name
Wiki-Text Intern-Text
Codieren alle mit \ maskierten Spezialzeichen durch spezielle Zeichenfolgen $@xx, wobei xx eine zweistellige Zahl ist. Dadurch wird verhindert, dass das Wiki die entsprechenden Zeichen hinter dem \ als Steuerzeichen interpretiert. Vor der Ausgabe oder Weiterverwendung als Namen werden die $@xx vom Wiki in die enstprechenden Spezialzeichen zurückgewandelt (DecodeEscChars, DecodeName).
Wiki-Text → EncodeEscChars → ReplaceCharSeq → Intern-Text
Wiki-Text → EncodeEscChars → ReplaceCharSeq → TrimSpaces → Intern-Text
Diese Funktionen ersetzen zusätzlich spezielle Zeichenfolgen (z.B. << in «, -> in → usw.) und wandeln alleinstehende < und > in benannte HTML Zeichen um (< und >).
Die Funktion PreprocLink entfernt zusätzlich überflüssige Leerzeichen aus dem String. Diese Funktion soll für Wiki-Text verwendet werden, welcher später als Seiten-Name oder Link Verwendung findet.
Die nicht eineindeutige Umkehrfunktion ist UnencodeEscChars. EncodeEscChars, welche intern von den beiden Funktionen gerufen wird, kann mehrfach auf denselben Text angewandt werden, da sie nicht eineindeutig umkehrbar ist. Das bedeutet, dass es keine unerwünschten Nebeneffekte gibt, wenn derselbe Text an mehrere Stellen (z.B. in Wscripts und intern im Wiki) mehrmals encodet wird. Was schon encodet ist, bleibt encodet, was noch nicht encodet ist, wird encodet.
Wiki-Text Name
Verwende diese Funktion um Text, zum Beispiel von einem Eingabefeld, in einen gültigen normalisierten Namen zu verwandeln.
Wiki-Text → PreprocLink → DecodeName → Name
Intern-Text Name
Verwandelt mit PreprocWikiText, PreprocLink oder EncodeEscChars codierten Inter-Text über die Funktionen DecodeEscChars und DecodeHtmlString in ein Format, welches für Seitennamen oder Filenamen verwendet werden kann.
Inter-Text → DecodeEscChars → DecodeHtmlString → Name
HTML-Text Name
Wandelt einige HTML-Namen in Zeichen um (z.B. < in <, { in { usw.). Diese Funktion ist Teil von DecodeName.
Es ist manchmal praktisch für eine Wiki-Anwendung, Daten in einem Makro verpackt in einer Seite zu speichern. Eine solche Anwendung muss berücksichtigen, dass Spezialzeichen in den Daten mit \ maskiert werden. Umgekehrt müssen diese Maskierungen vor dem Bearbeiten der Makros temporär in das interne Format konvertiert und vor dem Verwenden der Daten wieder ins native Format umgewandelt werden:
Konvertierung | Funktion | Beschreibung |
---|---|---|
Daten → Makros | MaskSpecChars | Makros können so in Seiten gespeichert werden |
Makros → Intern | EncodeEscChars | vor dem Parsen einer Seite |
Intern → Daten | UnEncodeSpecChars oder DecodeName | geparste Daten in natives Format überführen |