Coder Social home page Coder Social logo

edn.js's Introduction

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]') // => [1, 2]
read('#{1 2}') // => new Set([1, 2])
read('{1 2}') // => new Map([[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)) // => '#inst "1970-01-01T00:00:00.000Z"'
write(new Set([1,2,3])) // => '#{1 2 3}'
write(new Map([[Symbol('a'), 1]])) // => '{a 1}'
write({a: 1, b: 2}) // => '#js/Object {"a" 1 "b" 2}'
write([1,2]) // => '#js/Array [1 2]'

edn`str`

This function is designed to be used with ES6's tagged template strings

edn`(1 2)` // => List.from([1,2])

And if you want to interpolate values it does it without serializing them so identity is preserved

const object = {}
edn`(${object})` // => List.from([object])

Support for cyclic data

const m = new Map
m.set('self', m)
write(m) // => '{"self" # 1}'
const copy = read('{"self" # 1}')
copy.get('self') == copy // => true

edn.js's People

Contributors

jkroso avatar

Watchers

Shaady Dawood avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.