簡體   English   中英

是否有一個在線工具來自動縮進和格式化Clojure代碼,就像JSON有很多?

[英]Is there an online tool to auto-indent and format Clojure code like there are many for JSON?

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

看看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)))])))))

我不知道有任何在線服務這樣做,但有Clojure庫可以達到這個目的。 clojure.pprint附帶了Clojure(關鍵功能是clojure.pprint/pprint ); Brandon Bloom的fipp是一個明顯更快的選擇。

請注意,這些都不太可能像使用Emacs的程序員那樣格式化代碼; 然而,它們足夠接近有用,並且對於文字數據(不打算被解釋為代碼)可能很好地符合人類標准。

關注這一點 - 現在有http://pretty-print.net ,它將為EDN和Clojure Code服務。

現在有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)))])))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM