diff --git a/.gitignore b/.gitignore index a9ffd08..f5cd51d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .tup +test_patterns diff --git a/src/svui.nim b/src/svui.nim index 716444c..45167ea 100644 --- a/src/svui.nim +++ b/src/svui.nim @@ -1,13 +1,14 @@ import - std/typetraits, preserves + std/typetraits, preserves, std/tables type - Svui* {.preservesRecord: "svui".} = object + Svui*[E] {.preservesRecord: "svui".} = ref object + `attrs`*: Table[string, Preserve[E]] `svg`*: string -proc `$`*(x: Svui): string = - `$`(toPreserve(x)) +proc `$`*[E](x: Svui[E]): string = + `$`(toPreserve(x, E)) -proc encode*(x: Svui): seq[byte] = - encode(toPreserve(x)) +proc encode*[E](x: Svui[E]): seq[byte] = + encode(toPreserve(x, E)) diff --git a/svui.prs b/svui.prs index 715a1a6..6c8100b 100644 --- a/svui.prs +++ b/svui.prs @@ -1,3 +1,3 @@ version 1. -Svui = . +Svui = . diff --git a/tests/test_patterns.nim b/tests/test_patterns.nim new file mode 100644 index 0000000..db4ccf0 --- /dev/null +++ b/tests/test_patterns.nim @@ -0,0 +1,11 @@ +import std/[typetraits, unittest] +import preserves +import syndicate/patterns +import svui + +type Svui = svui.Svui[void] + +suite "patterns": + test "grab-all": + let pat = Svui ? {0: grab(), 1: grab()} + check $pat == " {0: >, 1: >}>"