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
-
07.11.2011, 08:08 #1
[JavaScript] Textparser mit geringer Laufzeit umsetzen
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
07.11.2011, 08:51 #2Lt. Commander
- Dabei seit
- Jun 2008
- Beiträge
- 1.283
[JavaScript] AW: Textparser mit geringer Laufzeit umsetzen
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)
Der Computer ist die logische Weiterentwicklung
des Menschen: Intelligenz ohne Moral. (John Osborne)
Vor Inbetriebnahme des Mundwerks bitte Gehirn zuschalten!
Wenn wir bedenken, dass wir alle verrückt sind, ist das Leben erklärt. (Mark Twain)
-
07.11.2011, 09:29 #3
[JavaScript] AW: Textparser mit geringer Laufzeit umsetzen
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.
C2Q 8300 | 4 GB DDR2 | HD 7870 | Gigabyte EP45-DS3 | 240 GB SSD | 250 GB 2.5" HDD | Fractal Design Define R3
CPU 3150 MHz @ 1.15 V RAM 900 MHz (5|5|5|30) @ 1.8 V GPU 1000 MHz @ 1.1 V IDLE= 70 W LOAD= 262 W


Zitieren