syndicated-open/src/protocol.nim

33 lines
915 B
Nim
Raw Normal View History

2022-02-26 23:39:22 +00:00
import
std/typetraits, preserves
type
XdgOpen* {.preservesRecord: "xdg-open".} = object
`uris`*: seq[string]
2022-02-26 23:39:22 +00:00
UriRunnerConfigKind* {.pure.} = enum
`ListenOn`, `ActionHandler`
2023-03-02 02:50:46 +00:00
`UriRunnerConfig`* {.preservesOr.} = object
case orKind*: UriRunnerConfigKind
of UriRunnerConfigKind.`ListenOn`:
2023-03-02 02:50:46 +00:00
`listenon`*: ListenOn
2022-02-26 23:39:22 +00:00
of UriRunnerConfigKind.`ActionHandler`:
2023-03-02 02:50:46 +00:00
`actionhandler`*: ActionHandler
2022-02-26 23:39:22 +00:00
2023-03-02 02:50:46 +00:00
ListenOn* {.preservesRecord: "listen-on".} = object
`dataspace`* {.preservesEmbedded.}: Preserve[void]
2023-03-02 02:50:46 +00:00
ActionHandler* {.preservesRecord: "action-handler".} = object
2022-02-26 23:39:22 +00:00
`pat`*: string
2023-03-02 02:50:46 +00:00
`entity`* {.preservesEmbedded.}: Preserve[void]
`action`*: Preserve[void]
2022-02-26 23:39:22 +00:00
2023-03-02 02:50:46 +00:00
proc `$`*(x: XdgOpen | UriRunnerConfig | ListenOn | ActionHandler): string =
2022-02-26 23:39:22 +00:00
`$`(toPreserve(x))
2023-03-02 02:50:46 +00:00
proc encode*(x: XdgOpen | UriRunnerConfig | ListenOn | ActionHandler): seq[byte] =
2022-02-26 23:39:22 +00:00
encode(toPreserve(x))