rewritten diff algorithm

This commit is contained in:
Andreas Rumpf 2017-06-23 21:03:31 +02:00
commit 64bc900456
5 changed files with 310 additions and 44 deletions

37
tests/difftest.nim Normal file
View file

@ -0,0 +1,37 @@
include "../src/karax"
import "../src/karaxdsl"
proc doDiff(a, b: VNode) =
var patches: seq[Patch] = @[]
echo diff(nil, vnodeToDom(a, kxi), b, a, patches, kxi)
echo patches
proc testAppend() =
let a = buildHtml(tdiv):
ul:
li: text "A"
li: text "B"
let b = buildHtml(tdiv):
ul:
li: text "A"
li: text "B"
li: text "C"
doDiff(a, b)
proc testInsert() =
let a = buildHtml(tdiv):
ul:
li: text "A"
li: text "C"
let b = buildHtml(tdiv):
ul:
li: text "A"
li: text "B"
li: text "C"
doDiff(a, b)
kxi = KaraxInstance(rootId: cstring"ROOT", renderer: proc (): VNode = discard)
#testAppend()
testInsert()

18
tests/lists.nim Normal file
View file

@ -0,0 +1,18 @@
import vdom, kdom, vstyles, karax, karaxdsl, jdict, jstrutils
var contents: seq[cstring] = @[]
proc onTodoEnter(e: Event; n: VNode) =
contents.insert(n.value & "BBBB")
contents.insert(n.value)
n.value = ""
proc createDom(): VNode =
result = buildHtml(tdiv):
input(class = "new-todo", placeholder="What needs to be done?", name = "newTodo",
onkeyupenter = onTodoEnter, setFocus)
for c in contents:
tdiv:
text c
setRenderer createDom