edn-js
An EDN reader and an EDN writer for JS. It tries to use native JS types when possible but currently JS has no equivalent of EDN's List or UUID; so edn-js provides them.
In addition to standard EDN this implementation also supports cyclic data.
Installation
npm install edn-js
then in your app:
const {read,write,edn,List,UUID} = require('edn-js')
API
read(str)
Just takes a string of EDN data and returns the best approximation of it in native JS data
read('[1 2]')
read('#{1 2}')
read('{1 2}')
write(value)
Converts any value to its EDN representation. If its not a builtin type then it should implement either toEDN()
returning a string or toJSON()
returning a plain Object
.
write(new Date(0))
write(new Set([1,2,3]))
write(new Map([[Symbol('a'), 1]]))
write({a: 1, b: 2})
write([1,2])
edn`str`
This function is designed to be used with ES6's tagged template strings
edn`(1 2)`
And if you want to interpolate values it does it without serializing them so identity is preserved
const object = {}
edn`(${object})`
Support for cyclic data
const m = new Map
m.set('self', m)
write(m)
const copy = read('{"self" # 1}')
copy.get('self') == copy