2023-08-25 19:12:49 +00:00
|
|
|
|
|
|
|
import
|
|
|
|
preserves, std/tables
|
|
|
|
|
|
|
|
type
|
|
|
|
CalendarDataspace* {.preservesRecord: "calendar".} = object
|
|
|
|
`url`*: string
|
2024-03-15 12:23:50 +00:00
|
|
|
`dataspace`* {.preservesEmbedded.}: EmbeddedRef
|
2023-08-25 19:12:49 +00:00
|
|
|
|
|
|
|
Property* {.preservesTuple.} = object
|
|
|
|
`label`*: string
|
|
|
|
`parameters`*: Parameters
|
|
|
|
`type`*: string
|
2024-03-15 12:23:50 +00:00
|
|
|
`values`* {.preservesTupleTail.}: seq[Value]
|
2023-08-25 19:12:49 +00:00
|
|
|
|
|
|
|
Parameters* = Table[Symbol, string]
|
2024-03-15 12:23:50 +00:00
|
|
|
Component* {.preservesTuple.} = object
|
2023-08-25 19:12:49 +00:00
|
|
|
`label`*: string
|
|
|
|
`properties`*: seq[Property]
|
|
|
|
`components`*: seq[Component]
|
|
|
|
|
|
|
|
proc `$`*(x: CalendarDataspace | Property | Parameters | Component): string =
|
2024-03-15 12:23:50 +00:00
|
|
|
`$`(toPreserves(x))
|
2023-08-25 19:12:49 +00:00
|
|
|
|
|
|
|
proc encode*(x: CalendarDataspace | Property | Parameters | Component): seq[byte] =
|
2024-03-15 12:23:50 +00:00
|
|
|
encode(toPreserves(x))
|