Clojure:将Clojure文件转换为YAML

6

如何将Clojure源文件转换为YAML格式?我已经在交互式REPL中使用了clj-yaml库来完成它,但我想自动化这个过程,这样我就可以传入一个输入文件并指定输出文件,例如:

clj2yaml input.clj > output.yml 

请查看 lein-exec 插件;它非常适合这个 https://github.com/kumarshantanu/lein-exec。 - zach
2个回答

4
我理解您需要帮忙读写文件!请查看 slurp spit。关于使用clj-yaml读取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文件。

2
你已经知道如何编写Clojure转换器,现在只需要将其打包为独立应用程序,并可能创建一个sh脚本来调用你的类。
作为另一种选择,如果你在*nix环境中,这里有一个很好的方法来做到这一点: Shebang脚本
#^:shebang '[
exec java -cp "$HOME/src/clj/clojure/clojure.jar" clojure.lang.Script "$0" -- "$@"
]
(your code here)

我应该补充说明,当我将字符串粘贴到交互式REPL中时,我可以进行转换。我的Clojure知识不足,在实际读取、转换和写出转换后的数据方面受到限制。谢谢您的回复。 - Zach Dennis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接