Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add edn_format.loads_all to parse all expressions in a string #60

Merged
merged 1 commit into from
Oct 2, 2019

Conversation

bfontaine
Copy link
Collaborator

This mirrors clojure.edn/read-string’ that returns nil on empty strings, instead of failing on an EOF error.

As I understand the edn spec, the input can (should?) be treated as a stream of values rather than only a single value:

A use of edn might be a stream or file containing elements […].

There is no enclosing element at the top level. Thus edn is suitable for streaming and interactive applications.

Copy link
Owner

@swaroopch swaroopch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very good idea and implementation, thanks @bfontaine !

Should we update README?

@bfontaine
Copy link
Collaborator Author

I added one example line in the README.

Copy link
Owner

@swaroopch swaroopch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏽

@bfontaine bfontaine merged commit 0d4c213 into master Oct 2, 2019
@bfontaine bfontaine deleted the loads-all branch October 2, 2019 18:29
gabrielferreira95 added a commit to nubank/edn_format that referenced this pull request Nov 25, 2019
* Convert requirements from exact to minimum

Fixes swaroopch#40

* Bump version to 0.5.13

* LICENSE: bump year

* Fix ambiguous variable name (swaroopch#44)

* Add a Changelog

* Fix parsing of exact-precision floats with a negative exposant (swaroopch#47)

* Accept missing printable ASCII chars (swaroopch#45)

* Add a sort_sets optional keyword argument to dump (swaroopch#42)

* add failing unit test

* add ImmutableList

* use ImmutableList on code

* fix latin

* conform to flake8

* add test

* add placeholder file

* workaround for limitation on the image downstream

* remove conda.txt file

* add docstring

* descend from Sequence instead of MutableSequence

* copy explicitly

* remove MutableSequence tests

* bump version

* fix formatting

* use copy.copy()

as .copy() is not available for lists on python2

* remove redundant tests

* simplify condition

* Raise custom exceptions on syntax errors (swaroopch#46)

* Add CONTRIBUTING.md (swaroopch#48)

* Handle fractions

edn-format/edn#64

* Handle #_

Fixes #4.

Note it doesn’t support top-level #_ usage such as in:

    foo #_ bar

* Add tests for #_

* Tweak README regarding caveats + mention @bfontaine contributor

* Bump version to 0.6.0

Thanks @bfontaine and @konr!

* Add v0.6.0 to the Changelog

* Run Travis tests on latest Python 3.7

* Use dist: xenial

* Use mutable data structures to improve parsing time

Previously a list was used to hold the intermediate results during
parsing of "expressions", but each expression was prepended by
copying, Fixing this takes parsing from quadratic to linear time.

* Bump version to 0.6.1

* Update setup.py to 0.6.1

* Various code simplifications (swaroopch#53)

* Parse nil and booleans as symbols (swaroopch#54)

* Add Vagrantfile for local dev

* Use collections.abc instead of collections

Fixes swaroopch#55

* Fix build issues

https://travis-ci.org/swaroopch/edn_format/jobs/475411817

* Fix Python 2.x compatibility

https://travis-ci.org/swaroopch/edn_format/jobs/475413453

* Bump version to 0.6.2

* DRY the requirements

Move from setup.py to only requirements.txt

* Add badge for PyPI version

* add support for unicode char literals

* fixed indentation in test_sort_keys

* combined version_info checks in edn_format/edn_lex.py

Co-Authored-By: LeXofLeviafan <lexofleviafan@gmail.com>

* fixed comment in char token definition

* made changes according to flake8 demands

* Bump version to 0.6.3

* Travis : Upgrade Ubuntu version to latest LTS, bionic

* Use tag signing

* Add an edn_parse.tag decorator, + docs and tests on tags (swaroopch#59)

* Contributor Notes: replace the deprecated commands

* Version 0.6.4

* Move contributor notes in CONTRIBUTING.md (swaroopch#61)

* Add edn_format.loads_all to parse all expressions in a string (swaroopch#60)

* Parse hexadecimal notation

Fixes swaroopch#62.

* Disallow 0-prefixed integers

From the spec:

> No integer other than 0 may begin with 0.

* Release v0.6.5

* Bump version to 0.6.5-nu
gcbeltramini pushed a commit to nubank/edn_format that referenced this pull request Nov 27, 2019
* Convert requirements from exact to minimum

Fixes swaroopch#40

* Bump version to 0.5.13

* LICENSE: bump year

* Fix ambiguous variable name (swaroopch#44)

* Add a Changelog

* Fix parsing of exact-precision floats with a negative exposant (swaroopch#47)

* Accept missing printable ASCII chars (swaroopch#45)

* Add a sort_sets optional keyword argument to dump (swaroopch#42)

* add failing unit test

* add ImmutableList

* use ImmutableList on code

* fix latin

* conform to flake8

* add test

* add placeholder file

* workaround for limitation on the image downstream

* remove conda.txt file

* add docstring

* descend from Sequence instead of MutableSequence

* copy explicitly

* remove MutableSequence tests

* bump version

* fix formatting

* use copy.copy()

as .copy() is not available for lists on python2

* remove redundant tests

* simplify condition

* Raise custom exceptions on syntax errors (swaroopch#46)

* Add CONTRIBUTING.md (swaroopch#48)

* Handle fractions

edn-format/edn#64

* Handle #_

Fixes #4.

Note it doesn’t support top-level #_ usage such as in:

    foo #_ bar

* Add tests for #_

* Tweak README regarding caveats + mention @bfontaine contributor

* Bump version to 0.6.0

Thanks @bfontaine and @konr!

* Add v0.6.0 to the Changelog

* Run Travis tests on latest Python 3.7

* Use dist: xenial

* Use mutable data structures to improve parsing time

Previously a list was used to hold the intermediate results during
parsing of "expressions", but each expression was prepended by
copying, Fixing this takes parsing from quadratic to linear time.

* Bump version to 0.6.1

* Update setup.py to 0.6.1

* Various code simplifications (swaroopch#53)

* Parse nil and booleans as symbols (swaroopch#54)

* Add Vagrantfile for local dev

* Use collections.abc instead of collections

Fixes swaroopch#55

* Fix build issues

https://travis-ci.org/swaroopch/edn_format/jobs/475411817

* Fix Python 2.x compatibility

https://travis-ci.org/swaroopch/edn_format/jobs/475413453

* Bump version to 0.6.2

* DRY the requirements

Move from setup.py to only requirements.txt

* Add badge for PyPI version

* add support for unicode char literals

* fixed indentation in test_sort_keys

* combined version_info checks in edn_format/edn_lex.py

Co-Authored-By: LeXofLeviafan <lexofleviafan@gmail.com>

* fixed comment in char token definition

* made changes according to flake8 demands

* Bump version to 0.6.3

* Travis : Upgrade Ubuntu version to latest LTS, bionic

* Use tag signing

* Add an edn_parse.tag decorator, + docs and tests on tags (swaroopch#59)

* Contributor Notes: replace the deprecated commands

* Version 0.6.4

* Move contributor notes in CONTRIBUTING.md (swaroopch#61)

* Add edn_format.loads_all to parse all expressions in a string (swaroopch#60)

* Parse hexadecimal notation

Fixes swaroopch#62.

* Disallow 0-prefixed integers

From the spec:

> No integer other than 0 may begin with 0.

* Release v0.6.5

* Merge with upstream

* Remove repeated tests

* Undo some changes after the merge

* Fix regex for t_FLOAT

* Add more test cases

* Refactor t_FLOAT regex
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants