Есть ли онлайн-инструмент для автоматического отступа и форматирования Clojure кода, как есть много для 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)))])))))

Ответы

Ответ 1

Посмотрите 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)))])))))

Ответ 2

Я не знаю ни одного онлайн-сервиса, который делает это, но есть библиотеки Clojure, которые служат этой цели. clojure.pprint поставляется с Clojure (ключевая функция clojure.pprint/pprint); Brandon Bloom fipp является значительно более быстрой альтернативой.

Обратите внимание, что ни одна из них, в частности, не может форматировать код в качестве программиста, вооруженного Emacs; они достаточно близки, чтобы быть полезными, однако, и для литеральных данных (не предназначенных для интерпретации как кода) вполне могут соответствовать человеческим стандартам.

Ответ 3

После этого - теперь http://pretty-print.net, который будет служить именно этой цели для EDN и Clojure Code.