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

Amo*_*kar 17 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)))])))))
Run Code Online (Sandbox Code Playgroud)

它应该自动缩进到这样的东西:

(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)))])))))
Run Code Online (Sandbox Code Playgroud)

Leo*_*hin 22

看看https://github.com/xsc/rewrite-clj 它是全新的,完全符合您的要求.

编辑我仍然对此赞成.我相信我找到了一个更好的解决方案:您可以轻松地clojure.pprint使用code-dispatch而无需使用外部库.

(clojure.pprint/write '(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)))]))))) 
  :dispatch clojure.pprint/code-dispatch)
=> 
(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)))])))))
Run Code Online (Sandbox Code Playgroud)


Mic*_*zyk 7

我不知道有任何在线服务这样做,但有Clojure库可以达到这个目的.clojure.pprint附带Clojure(关键功能是clojure.pprint/pprint); Brandon Bloom的fipp是一个明显更快的选择.

请注意,这些都不太可能像使用Emacs的程序员那样格式化代码; 然而,它们足够接近有用,并且对于文字数据(不打算被解释为代码)可能很好地符合人类标准.


com*_*itc 5

关注这一点 - 现在有http://pretty-print.net,它将为EDN和Clojure Code服务.