Clojure:将 Clojure 文件转换为 YAML

发布于 2024-11-10 03:13:47 字数 209 浏览 3 评论 0原文

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

clj2yaml input.clj > output.yml 

How would you convert a clojure source file to YAML? I have used the clj-yaml library to do it in the interactive REPL, but I'd like to automate this, so I can pass in an input file and specify an output, ie:

clj2yaml input.clj > output.yml 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

自由如风 2024-11-17 03:13:47

据我了解,您需要帮助来读取和写入文件?!请参阅 slurp。有关读取 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 文件。

As I understand it you need help to read and write the files?! See slurp and spit. For a real example of reading a YAML config file and parsing it with clj-yaml, see pswincom.gateway.config.

And here's an implementation of a simple clojure tool to do the convertion:

(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)))

(On Windows) I can create a batch file called clj2yaml.bat to make it easy to use. It assumes the needed jar-files are located in the current directory. I'm just a novice when it comes to this kind of execution, so a better script is quite likely possible, but here it is:

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 %*

I can now execute clj2yaml foo.clj foo.yaml to create the yaml file.

甜`诱少女 2024-11-17 03:13:47

您已经知道如何编写 clojure 转换器的代码,现在只需将其打包为独立应用程序,并可能创建一个仅调用您的类的 sh 脚本。

作为替代方案,这里有一个巧妙的方法(如果您在的话) *nix 环境:

#^:shebang '[
exec java -cp "$HOME/src/clj/clojure/clojure.jar" clojure.lang.Script "$0" -- "$@"
]
(your code here)

You already know how to code a clojure converter, you now just need to package it as a standalone application, and possibly create a sh script that just invokes your class.

As an alternative, here's a neat way to do it, if you're on a *nix environment:

#^:shebang '[
exec java -cp "$HOME/src/clj/clojure/clojure.jar" clojure.lang.Script "$0" -- "$@"
]
(your code here)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文