Clojure:将Clojure文件转换为YAML

时间:2011-05-27 14:54:56

标签: clojure yaml

如何将clojure源文件转换为YAML?我已经使用clj-yaml库在交互式REPL中执行它,但我想自动执行此操作,因此我可以传入输入文件并指定输出,即:

clj2yaml input.clj > output.yml 

2 个答案:

答案 0 :(得分:4)

据我所知,你需要帮助才能读写文件?!请参阅slurpspit。有关读取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)