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