JavaScript Textparser mit geringer Laufzeit umsetzen

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo Leute,

ich habe folgendes Szenario: da ist eine Textarea mit Plaintext drin, der z.T. Wiki-Syntax beinhaltet. Nun, darunter ist ein Vorschaubereich, in dem sich laufend die Vorschau auf den formatierten Text aktualisiert (wenn sich der Text in der Textarea geändert hat). Dazwischen wird der Plaintext von Javascript geparst und der Wiki-Syntax durch HTML-Markup ersetzt.

Nun ist meine Frage relativ simpel: wie parse ich den Plaintext effizient? Denn wenn der Text größer wird, wird auch die Laufzeit der Parsemethode erhöht und wenn die Vorschau sich nach jedem Zeichen aktualisert, dann könnte es u.U. zu Problemen kommen. D.h. immer den ganzen Input parsen ist eventuell nicht gut! :)

Wie mache ich das also am Besten?

Beste Grüße,
CPU
 
ich gehe davon aus, dass du bereits parst und auch ungefähr weißt, wie das üblicherweise gemacht wird.

*du lässt nur alle paar sekunden parsen und nicht bei jedem tastendruck
*vorschau auf klick (wie überall üblich, kein benutzer dürfte sich aufregen)
*du hälst den geparsten baum im speicher und machst nurnoch änderungen, statt jedesmal neu aufzubauen (sehr schwierig)
 
Wenn man den Text immer nur am Ende fortschreiben könnte, wäre es sehr einfach mit einem "Keller" zu lösen. Also so ähnlich wie man die Vorrangrechnung für einen Taschenrechner implementiert.

Da Du aber theoretisch den Text an einer beliebigen Stelle editieren kannst, dürfte das nicht funktionieren. Daher würde ich vorschlagen, einen Baum aufzubauen, dessen Knoten verschiedene Attribute zugewiesen werden können (z.B. Textgröße, fett, usw.). Jedes Wort ist ein Blatt in dem Baum und jeder Bereich über mehrere Wörter ein entsprechender Elternknoten. In einer separaten Liste, würde ich dann speichern, zu welcher Stelle im Text (Position des Cursers) ein Knoten gehört.
 
Zurück
Oben