xdg_open_ng/src/protocol.nim

30 lines
676 B
Nim

import
std/typetraits, preserves
type
XdgOpen* {.preservesRecord: "xdg-open".} = object
`data`*: seq[string]
Attrs*[E] {.preservesDictionary.} = ref object
`actions`*: seq[Action]
UriRunnerConfig*[E] {.preservesRecord: "config".} = ref object
`attrs`*: Attrs[E]
Action* {.preservesTuple.} = object
`pat`*: string
`cmd`*: seq[string]
proc `$`*[E](x: Attrs[E] | UriRunnerConfig[E]): string =
`$`(toPreserve(x, E))
proc encode*[E](x: Attrs[E] | UriRunnerConfig[E]): seq[byte] =
encode(toPreserve(x, E))
proc `$`*(x: XdgOpen | Action): string =
`$`(toPreserve(x))
proc encode*(x: XdgOpen | Action): seq[byte] =
encode(toPreserve(x))