Benutzer:PerfektesChaos/js/WikiSyntaxTextMod/tech/WikiTom

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

WikiSyntaxTextModTechnische Interna → WikiTom

WikiTom-Objekt

Jedes WikiTom-Objekt enthält einen Zeichenketten-Abschnitt eines Wikitextes.

Darüber hinaus ist das WikiTom-Objekt in der Lage, ein oder mehrere children aufzunehmen, von denen jedes selbst ein WikiTom-Objekt ist. Jedes WikiTom-Objekt kann bei Bedarf wieder in Abschnitte unterteilt werden.

Jedes WikiTom-Objekt kann über den Zeichenketten-Nutzinhalt hinaus weitere Eigenschaften zuordnen, etwa:

  • Veränderbarkeit
  • Auffindbarkeit bei der Suche
  • Wikisyntax-Bedeutung (normaler Text, Linkziel, Pipe, Vorlageneinbindung, Code usw.)
  • erfolgte Veränderung

Es gibt unter anderem eine Funktion .toString() zur Abfrage des Zeichenketten-Inhalts einschließlich aller Unterobjekte.

Ablauf bei der Analyse einer Seite

[Bearbeiten | Quelltext bearbeiten]

Aus dem kompletten Wikitext der Seite wird zunächst ein WikiTom-Objekt gebildet.

Immer vor dem Auffinden und Verändern geschützt werden in folgender Reihenfolge:

  1. Kommentare <!-- ... -->
  2. <nowiki>
  3. <syntaxhighlight> (und source)

Diese Bereiche beeinflussen die weitere Interpretation und Verarbeitung des Wikitextes; solche Abschnitte werden herausgetrennt und in gesonderten WikiTom-Objekten abgelegt.

Weiterhin werden zur Vereinfachung separiert:

  • Überschriften
  • durch doppelte Leerzeile gebildete Absätze.

Damit werden Suchvorgänge begrenzt.

Nur wenn es besonderen Bedarf dafür gibt (etwa benutzerdefinierte und einige intern ausgelösten Änderungen), werden beispielsweise Linkziele oder Sortierschlüssel nach ihrer Verarbeitung in einzelnen WikiTom-Objekten separiert.

Bei Vorlageneinbindungen, an denen besonderes Interesse besteht, werden die Parameter und ihre Zuweisungen dem WikiTom der Einbindung zugeordnet. Dazu werden alle inneren Syntaxelemente abgetrennt.

Aus den hierarchischen Unterteilungen bildet sich eine Baumstruktur. Nach Abschluss aller Analysen wird festgestellt, ob sich in Teilbäumen eine Änderung ergeben hat. Hier werden die veränderten Teilzeichenketten neu aneinandergereiht. Wo ein Teilbaum unverändert blieb, kann die unveränderte Ursprungszeichenkette weiter benutzt werden.

Vereinfachtes Beispiel

[Bearbeiten | Quelltext bearbeiten]

Angenommen sei, dass benutzerdefinierte Textänderungen gewünscht sind; außerdem ein besonderes Interesse an Fußnotenvorlagen.

Jeder Punkt ist ein WikiTom-Objekt. Grau unterlegt sind geschützte Bereichs-Objekte. Das \n steht für einen Zeilenumbruch. Nur ein kleiner Ausschnitt eines Wikitextes ist dargestellt; teils etwas vereinfacht gegenüber der Implementierung.

… … … …

  • <syntaxhighlight lang="css">\n.mw-rollback-link a {\n color: #D0D0D0; \n}\n</syntaxhighlight>[1]

… … … …

  • [2]
  • \nAngaben durch höhere Eingebung gemäß [[
  • Wikipedia:Hauptseite[8]
  • ]].\n\n[9]
  • == Weblinks ==[10]
  • \n* [
  • http://example.org/About[11]
  •   Über das Beispiel] (englisch), abgerufen am 17. November 2024\n* [
  • http://example.com/Manufacturers[11]
  •   Herstellerliste] (englisch), abgerufen am 17. November 2024\n\n[9]
  • {{SORTIERUNG:Schlussel}}[12]

… … … …

Aufschlüsselung der WikiTom-Typen

[Bearbeiten | Quelltext bearbeiten]
  1. Fester Code (geschützt einschließlich tags)
  2. a b c Vorlageneinbindung
  3. a b c Vorlagensyntax: Öffnende Klammern
  4. a b c Linkziel: Name der Vorlagen (geschützt)
  5. a b c d e Vorlagensyntax: Pipe
  6. a b c d e Vorlagensyntax: Parameterwert; normaler Text
  7. a b Vorlagensyntax: Schließende Klammern
  8. a b Absatz (beendet durch Leerzeile = doppelte \n)
  9. Überschrift
  10. a b Linkziel: URL (geschützt)
  11. absoluter Schutz

Bis Mitte 2012 wurde mit WSTM.4 eine lineare Abfolge von Zeichenketten-Abschnitten umgesetzt. Dieses stringDOM ermöglichte bereits einen selektiven Schutz von Linkzielen und anderen unveränderlichen Bereichen.

Komplexere Aufgaben und vor allem eine hierarchische Strukturierung von Syntaxelementen (wie Tags und Vorlagen) ließen sich aber mit der einfachen Abfolge nicht umsetzen. Deswegen wurde ab Frühjahr 2012 das WikiTom-Objekt definiert.