是否有一个在线工具来自动缩进和格式化Clojure代码,就像JSON有很多?

时间:2013-07-24 09:04:44

标签: clojure clojurescript

网上有很多工具采用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)))])))))

4 个答案:

答案 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)))])))))
相关问题