rewritten diff algorithm
This commit is contained in:
parent
cd74cd9d4e
commit
64bc900456
5 changed files with 310 additions and 44 deletions
37
tests/difftest.nim
Normal file
37
tests/difftest.nim
Normal 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
18
tests/lists.nim
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue