2016-07-26 5 views
0

指示する方法はありますか?clojure.core.edn/read自動ネームスペースのキーワードを解決する方法はありますか?Clojure ednが自動ネームスペースキーワードを読み取る

(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で強制)がはるかに読みやすくなります。

+1

'clojure.core/read-string'を使ってみましたか? – OlegTheCat

+0

@OlegTheCat面白い、私はしなかった!私はそれを掘る必要がありますオプションマップです。 – nha

+0

@OlegTheCatので、私が今理解している限り、clojure.core/read-stringは私にednのような読者を許さないでしょう。これにより、https://github.com/juxt/aeroのように定義された設定ができなくなります(別途動作していた可能性があります)。 – nha

答えて

0

私の場合、最も簡単な解決策は、設定ファイル内の名前空間のないキーワードでclojure.specを使用することです(私はそれができるかどうかはわかりませんでした)。

コアリーダー機能を使用すると効果があります。たるみのアレックス・ミラーから

引用:

はい、あなたはまた、あなたは可能性がEDNの設定ファイルにREQ-国連とオプトイン国連

で修飾されていないキーの 書き込みスペックをフルネームスペースが必要になりますいずれかの通常のコアリーダーFNSまたはclojure.ednリーダーFNSは#であなただけの読者を設定するための呼び出しの周りに をバインドする必要があるものの、タグ付きリテラルを読み取ること ことができるはず

関連する問題