【发布时间】:2016-07-26 15:12:39
【问题描述】:
有没有办法指导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)更具可读性。
【问题讨论】:
-
您是否尝试过使用
clojure.core/read-string? -
@OlegTheCat 有趣,我没有!不过,我必须深入研究它的选项图。
-
@OlegTheCat 据我现在了解,clojure.core/read-string 不会让我拥有像 edn 这样的读者。这将阻止我在github.com/juxt/aero 中定义配置(否则可以工作)。
-
@nha 也许
tools.reader可以满足您的需求?不过,我自己没有使用过,所以我可能是错的。