1. #1
    Lieutenant
    Dabei seit
    Jan 2006
    Beiträge
    690

    [JavaScript] Textparser mit geringer Laufzeit umsetzen

    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

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Lt. Commander
    Dabei seit
    Jun 2008
    Beiträge
    1.289

    [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)

  4. #3
    Lt. Commander
    Dabei seit
    Feb 2010
    Beiträge
    1.746

    [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.
    Radeon HD 7870 | i5 4670K | 16 GB RAM | MSI Z87M-G43 | 240 GB SSD | 1 TB NAS | Schublade

    Energieverbrauch eures Systems__ Vom LianLi V300@V480ger CaseCon__ Der ideale Gaming-PC

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •