有没有办法指示clojure.core.edn/read
如何解析自动命名空间关键字?
(edn/read-string "{:not-namespaced \"ko\" }") ;;=> {:not-namespaced "ko"}
(edn/read-string "{:namespaced/ok \"ko\" }") ;;=> #:namespaced{:ok "ko"}
(edn/read-string "{::namespaced \"ko\" }") ;;=> Unhandled java.lang.RuntimeException Invalid token: ::namespaced autonamespaced does not work
最后一个例外是有道理的,因为"A keyword cannot begin with ::"。
我可以在这个简单示例中使用load-file
,但我还需要edn
的可扩展性(读取自定义标记)。
有一个参数来指示如何解析命名空间会使我的配置文件(强制clojure.spec
)更具可读性。
答案 0 :(得分:0)
所以在我的情况下,最简单的解决方案是在我的配置文件中使用clojure.spec和非命名空间的关键字(我不知道它可以做到这一点)。
使用核心阅读器功能也会起作用。
亚历克斯米勒引用松弛的话:
是的,在edn配置文件中你需要完整的命名空间你也可以 使用req-un和opt-un
在非限定密钥上编写规范普通核心阅读器fns或者clojure.edn阅读器应该是 能够用#读取标记的文字但你只需要绑定 围绕电话设置读者
答案 1 :(得分:0)
我喜欢在解析字符串之前先对其进行转换,以使edn文件保持干净,而不必将spec键视为不合格。
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/netcoreapp3.0/testreactredux.dll",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
"serverReadyAction": {
"action": "debugWithChrome", // <---- CHANGE HERE ( default is 'openExternally' )
"pattern": "^\\s*Now listening on:\\s+(https?://\\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
}
]
}
在写入和重新读取edn文件时,这可能不是很可靠,但对于配置数据来说效果很好。