PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JavaScript Textparser mit geringer Laufzeit umsetzen



CPU
07.11.2011, 08:08
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

ManOki
07.11.2011, 08:51
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)

Ruheliebhaber
07.11.2011, 09:29
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.