网上有很多工具采用JSON文本,并显示格式化和缩进格式。
有些人走得更远,做出一个漂亮的树状结构:http://jsonviewer.stack.hu/
我们对Clojure代码有类似的东西吗?
或者至少可以自动缩进的东西。
如果我的文字是这样的:
(defn prime? [n known](loop [cnt (dec (count known)) acc []](if (< cnt 0) (not (any? acc))
(recur (dec cnt) (concat acc [(zero? (mod n (nth known cnt)))])))))
它应该自动缩进到这样的东西:
(defn prime? [n known]
(loop [cnt (dec (count known)) acc []]
(if (< cnt 0) (not (any? acc))
(recur (dec cnt) (concat acc [(zero? (mod n (nth known cnt)))])))))
答案 0 :(得分:22)
看看https://github.com/xsc/rewrite-clj 它是全新的,完全符合您的要求。
编辑我仍然对此赞不绝口。我相信我找到了一个更好的解决方案:您可以使用clojure.pprint
轻松执行此操作,而无需使用外部库。
code-dispatch
答案 1 :(得分:7)
我不知道有任何在线服务这样做,但有Clojure库可以达到这个目的。 clojure.pprint
附带Clojure(关键功能是clojure.pprint/pprint
); Brandon Bloom的fipp是一个明显更快的选择。
请注意,这些都不太可能像使用Emacs的程序员那样格式化代码;然而,它们足够接近有用,并且对于文字数据(不打算被解释为代码)可能很好地符合人类标准。
答案 2 :(得分:5)
对此进行跟进 - 现在http://pretty-print.net将为EDN和Clojure代码服务于此目的。
答案 3 :(得分:0)
为此目的,现在有https://github.com/weavejester/cljfmt
将其添加到您的Leiningen插件中:
:plugins [[lein-cljfmt "0.6.1"]]
然后,自动格式化项目中的所有代码:
lein cljfmt fix
您的示例代码将变为:
(defn prime? [n known] (loop [cnt (dec (count known)) acc []] (if (< cnt 0) (not (any? acc))
(recur (dec cnt) (concat acc [(zero? (mod n (nth known cnt)))])))))
添加一些换行符并重新格式化后:
(defn prime? [n known]
(loop [cnt (dec (count known)) acc []]
(if (< cnt 0) (not (any? acc))
(recur (dec cnt) (concat acc [(zero? (mod n (nth known cnt)))])))))