From 418c027f6c1027291477f8ddf971649b0c9e8f13 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Tue, 27 Jun 2017 23:54:58 +0200 Subject: [PATCH] smart-diff algorithm works now --- src/karax.nim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/karax.nim b/src/karax.nim index f07bf71..f8230c7 100644 --- a/src/karax.nim +++ b/src/karax.nim @@ -234,8 +234,10 @@ proc apply(patches: JSeq[Patch]; kxi: KaraxInstance) = proc diff(newNode, oldNode: VNode;parent, current: Node; patches: JSeq[Patch]): EqResult = result = eq(newNode, oldNode) case result - of identical: + of identical, similar: newNode.dom = oldNode.dom + if result == similar: updateStyles(newNode, oldNode) + let newLength = newNode.len var oldLength = oldNode.len let minLength = min(newLength, oldLength) @@ -306,8 +308,6 @@ proc diff(newNode, oldNode: VNode;parent, current: Node; patches: JSeq[Patch]): patches.addPatch(pkRemove, current, current.childNodes[i], nil) result = different - of similar: - updateStyles(newNode, oldNode) of changed: assert oldNode.kind == VNodeKind.component let x = VComponent(oldNode)