EDN liberal formatter with optional lazy support.

Parser assumes input is valid EDN (WIP), protects against malicious literals and by default handles incomplete input. Not suitable if you need a strict parser.

Printer supports naive pretty mode with ANSI color support.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(ns foo.baz
  (:api dunaj)
  (:require [dunaj.format.edn :refer [lazy-edn pretty-edn]]))

(def url "examples/dunaj.coll.tuple.edn")
;;=> #'foo.baz/url

(def content (with-scope (->> url slurp (parse edn) first)))
;;=> #'foo.baz/content

(get content 'pair)
;;=> ";; pair is faster than destructuring but more verbose\n  (defn foo [[k v]]\n      (+ k v))\n  ;;=> #'foo.bar/foo\n\n  (defn foo-pair [p]\n    (let [k (key p)\n          v (val p)]\n      (+ k v)))\n  ;;=> #'foo.bar/foo-pair\n\n  (time (dotimes [x 1000000] (foo [x x])))\n  ;; Elapsed time: 400.177109 msecs\n  ;;=> nil\n\n  (time (dotimes [x 1000000] (foo (pair x x))))\n  ;; Elapsed time: 300.855405 msecs\n  ;;=> nil\n\n  (time (dotimes [x 1000000] (foo-pair (pair x x))))\n  ;; Elapsed time: 264.42369 msecs\n  ;;=> nil"

(defn dopp [x] (println! (str (print pretty-edn x))))
;;=> #'foo.baz/dopp

;; pretty string
(dopp [(str (range 1000))])
;; "01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021..."
;;=> nil

;; pretty level
(dopp [0 [1 [2 [3 [4 [5 [6 [7 [8 [9]]]]]]]]]])
;; 0 [1 [2 [3 [4 [5 #]]]]]
;;=> nil

(dopp [0 {1 {2 {3 {4 {5 {6 {7 {8 {9 10}}}}}}}} 2 3}])
;; 0 {1 {2 {3 {4 {5 #}}}}, 2 3}
;;=> nil

;; pretty item
(dopp [0 (vec (range 1000))])
;; [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
;; 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
;; 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
;; 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
;; 99 ...]
;;=> nil

edn

Available since version 1.0 (view source)

VAR of type (I IParserFactory IPrinterFactory)

An EDN formatter factory.

See also: lazy-edn, pretty-edn

lazy-edn

Available since version 1.0 (view source)

not referred automatically

VAR of type IParserFactory

A lazy EDN formatter factory.

See also: edn, pretty-edn

pretty-edn

Available since version 1.0 (view source)

not referred automatically

VAR of type IPrinterFactory

JSON printer factory with pretty printing.

See also: edn, lazy-edn