juji-io / datalevin

A simple, fast and versatile Datalog database
https://github.com/juji-io/datalevin
Eclipse Public License 1.0
1.07k stars 60 forks source link

Create dynamic var for data readers #187

Closed respatialized closed 1 year ago

respatialized commented 1 year ago

Rationale

This supports the use case of users who have values with tagged literals stored in their databases. Just as with clojure.core/*data-readers* and clojure.core/default-data-readers, there is also a static var containing the default readers to fall back to in contexts where the dynamic value has been rebound, which is used to initialize the dynamic var.

Testing

Tested locally with lein test - no issues.

Questions

I am not sure if the naming of datalevin-data-readers is unwieldy, but I named those vars like that to avoid potentially shadowing the equivalent vars from clojure.core. They can be renamed to something different if it would be better.

respatialized commented 1 year ago

I didn't add tests for the custom reader capabilities. I can if you would like me to.

huahaiy commented 1 year ago

It would be great if you could add a test for this! Thanks.