Christoph Zurnieden: Wiki-Test in JavaScript

Beitrag lesen

Hi,

Heute brauche ich einfach nur Feedback zu dem fertigen Produkt.

Es ist ein recht schwaches Argument. Du hast Glück, das keiner der entspr. Damen und Herren da ist ;-)

In den Funktionen domIns() und domDel() wird ein Blockelement benutzt dem nachträglich per CSS ein Inlineverhalten aufgepropft wird. Das macht hier wenig Sinn.

Eine andere Methode ist mir dazu nicht eingefallen.
Klar, ich hätte eine Klasse definieren können und dann den Klassennamen setzen können, aber das ist für meinen Geschmack nur genauso gut.

Und warum hast Du nicht einfach direkt ein Inlineelement genommen?

zu replaceAll habe ich keine Alternative gefunden.

Es funktioniert mit normalen Regexen.
Was hast Du denn probiert, das es nicht funktioniert hat?

innerHTML ist einfacher (und auch browserübergreifend).

Naja, "browserübergreifend" ist aber schon recht optimistisch, oder?

Klar könnte ich den ganzen Text mit DOM zusammenbasteln, aber das wäre dann etwas langatmig geworden.

Es hält sich in Grenzen.

removeAllChildren() geht auch eleganter.

wie ?
denn der Algorithmus frisst nämlich viel Zeit !!!

function removeAllChildren(arnold){
  var adam   = arnold.cloneNode(false);
  arnold.parentNode.replaceChild(adam,arnold);
}

Und wird dort das Problem nicht gelöst, man kann immer nur auf den neuesten Artikel aufsetzen, aber alle Artikel gegeneinander vergleichen.

Und das ist keine Lösung? Im Kontext mit der Administration gesehen ist das durchaus eine akzeptable Lösung.

Was bei meinem Algorithmus mir wichtig ist, daß er sich durch einen komplett umgestellten Text sich nicht aus der Fassung bringen lässt

Das tut er aber, siehe Twilos Posting.

i.e. Selbst wenn man einen Absatz an eine ganz andere Stelle kopiert und dann dort was einfügt, erkennt er die eingefügte Änderung.

Einen Absatz an eine ganz andere Stelle zu verschieben kann bereits den Sinn verändern. Zudem handelst Du Dir völlig unnötig Komplexität ein, denn wenn Du das ganz durchziehst landest Du am Ende und Worst Case bei O(n^m) (m sei die Anzahl der Versionen).

Bei Text wird normalerweise ein zeilenweises Diff gezogen. Nicht verschachtelt, sondern ganz normal.
Normal heißt hier: Einfügen und Löschen, Vertauschen wird selten benutzt.
Für die genauen Algorithmen siehe diff

Auch was das mutwillige Zerstören von Artikeln angeht habe ich sowas wie einen Maßstab gefunden: die Anzahl der 'Ankerpunkte' von Version zu Version.
Diese Anzahl ändert sich nicht wesentlich bei Korrekturen oder Ergänzungen, sie ändert sich aber wesentlich bei einem ganz anderen Text oder bei einer Löschung.
Somit habe ich auch dort meine Alarmglocke.

Eine ziemlich teure Alarmglocke.
Aber gut, hast Du ja schon, bräuchtest Du nicht noch extra zu erzeugen.

videntur,

"videre" bedeutet im Passiv etwas anderes als im Aktiv. In diesem Zusammenhang hier könnte ich das fast schon als Affront nehmen! ;-)
(Du wolltest wahrscheinlich "man sieht sich" o.ä.?)

so short

Christoph Zurnieden