edn/README.md

52 lines
2.4 KiB
Markdown
Raw Normal View History

2020-02-19 00:29:52 +00:00
[![License](//img.shields.io/badge/license-BSD-blue.svg?style=flat)]()
[![Boot](//img.shields.io/badge/Chicken-Scheme-ECC42F.svg?style=flat)](http://www.call-cc.org/)
[![Clojars](//img.shields.io/badge/Eggversion-0.5.1-blue.svg?style=flat)](http://wiki.call-cc.org/eggref/4/edn)
[![Gratipay](//img.shields.io/gratipay/zilti.svg?style=flat)](//gratipay.com/zilti)
[![Flattr this](//api.flattr.com/button/flattr-badge-small.png)](https://flattr.com/submit/auto?user_id=zilti&url=https%3A%2F%2Fbitbucket.org%2Fzilti%2Fedn)
chicken-edn
===========
An [EDN](https://github.com/edn-format/edn) reader and writer for chicken scheme.
Installation: `chicken-install edn`
Data type conversions
---------------------
* All kinds of numbers get converted to Scheme numbers, precision suffixes (N and M) get ignored.
* Keywords :keyword get converted to chicken scheme keywords keyword:.
* Maps get converted to SRFI 69 hashtables.
* Vectors are srfi-4 vectors.
* true = #t, false = #f, nil = '()
Missing reader functionality
----------------------------
Should you notice missing functionality of the reader, plesase use [the issues page](https://bitbucket.org/zilti/edn/issues?status=new&status=open) to report
it and, if possible, provide a minimal test case.
API
---
* Transforming EDN into Chicken: `(with-input-from-port <port> read-edn)`
* Transforming Chicken into EDN: `(with-output-to-port <port> (write-edn <datastructure>))`
* Using reader tags: the library contains a public a-list `tag-handlers`. To register a handler, add an a-list entry where the key is the tag without `\#` and as a keyword, and the value a one-argument procedure.
Releases
--------
* **0.5.1**: Small compatibility improvements: "/" now starts a symbol as well, and "," is treated as whitespace.
* **0.5**: Reader tag support.
* **0.4**: Complete rewrite. Only relies on R7RS, and SRFI 1, 4, 69 and 88. Uses ports. Reads and writes EDN.
* **0.3**: EDN tags, including special forms, work. #inst and #uuid both get read as strings. Add nil. Add number prefixes. Add no-space-required to #_ tag.
* **0.2.1**: Can read EDN-files and -strings. EDN tags are not working yet.
* **0.2**: Can read EDN-strings with one top-level data structure.
Roadmap
-------
About
-----
Written by Daniel Ziltener. EDN written by Rich Hickey. The EDN specification is available at [https://github.com/edn-format/edn](https://github.com/edn-format/edn).