如何将clojure源文件转换为YAML?我已经使用clj-yaml库在交互式REPL中执行它,但我想自动执行此操作,因此我可以传入输入文件并指定输出,即:
clj2yaml input.clj > output.yml
答案 0 :(得分:4)
据我所知,你需要帮助才能读写文件?!请参阅slurp和spit。有关读取YAML配置文件并使用clj-yaml解析它的真实示例,请参阅pswincom.gateway.config。
这是一个简单的clojure工具的实现来进行转换:
(ns sample
(:require [clj-yaml.core :as yaml]))
(->> (slurp (nth *command-line-args* 0))
read-string ; converts the file content to a clojure datastructure
yaml/generate-string
(spit (nth *command-line-args* 1)))
(在Windows上)我可以创建一个名为clj2yaml.bat的批处理文件,以方便使用。它假定所需的jar文件位于当前目录中。对于这种执行,我只是一个新手,所以很可能有一个更好的脚本,但这里是:
java.exe -cp .\clojure-1.2.0.jar;.\clojure-contrib-1.2.0.jar;.\clj-yaml-0.3.0-20101010.033133-1.jar;.\snakeyaml-1.5.jar clojure.main sample.clj %*
我现在可以执行clj2yaml foo.clj foo.yaml
来创建yaml文件。
答案 1 :(得分:2)
您已经知道如何编写clojure转换器,您现在只需将其打包为独立应用程序,并可能创建一个只调用您的类的sh脚本。
作为替代方案,如果你在* nix环境中,这里是neat way to do it:
#^:shebang '[
exec java -cp "$HOME/src/clj/clojure/clojure.jar" clojure.lang.Script "$0" -- "$@"
]
(your code here)