The Uri type was missing implementations for several of the methods that are part of the protocols and interfaces that Uri declares as implementing. The missing functions are: * count from IPersistentCollection * empty from IPersistentCollection * cons from IPersistentCollection (used by conj) * without from IPersistentMap (used by dissoc) * iterator from Iterable which IPersistentMap implies (used by reduce) There was also a problem with the implementation for entryAt which was not returning the expected IMapEntry type causing a runtime error when it was called (which find does). All these problems are now fixed and tested with unit tests.
…//a/d". This is now fixed.
…ts hosts with _'s wrong.
…ics.uci.edu/~fielding/url/test2.html All tests pass except ones that resolve src-uri and "//c". The latter url is parsed incorrectly.
While Clojure 1.4 silently accepts the incomplete form: ```clojure (defn- as-path "Ensure path") ``` Clojure 1.5 is more particular, causing failure when requiring the `org.bovinegenius.exploding-fish` namespace: ``` user> (require 'org.bovinegenius.exploding-fish :reload-all) IllegalArgumentException Parameter declaration missing clojure.core/assert-valid-fdecl (core.clj:6716) ``` `as-path` was fully re-declared in a `letfn` inside `resolve-path`, so I've simply extracted the internal declaration and inserted it in the top-level `as-path`, making the top-level form complete.