Q1: is there a particular reason the #uri
edn extension was not provided in Clojure, given that clojure and clojurescript implement clojure.core/uri?
on java.net.URI
and goog.Uri
?
Here is a gist documenting how to do it, with tests: HOWTO install #uri reader extension in Clojure/Script
Despite the instruction that "Reader tags without namespace qualifiers are reserved for Clojure" I thought this was safe, because if Clojure were to eventually provide it then: (1) this impl becomes superseded and should be removed; (2) this impl is intended to be the exact implementation that core would provide.
However Borkdude pointed out:
- borkdude The problem is that you can't easily undo overriding built-in tags if people have data_readers.cljc stuff on their classpath that override
- Dustin Getz Ah so if this extension ends up bundled as a transitive dependency in some lib
- borkdude Yes. So even if you wish to remove it, as you know, software isn't killed that easily
Q2: Therefore I request this be considered to someday be provided in core
Q3: Is this the correct impl? (It's my intent to document this once and for all so I appreciate feedback/comments.)
Q4: transit-clj & transit-cljs decline to read java.net.URI and goog.Uri (in disalignment with the clojure.core/uri?
predicate), instead reading as cct.Uri. Why is that?