Hi Adrian, Yes, it was the missing clojars deployment. 1.8.0 is up there now. 1.7.0 doesn't have the map representation, which I added to the existing vector-of-vectors syntax and moved the README examples to. Please try now.
Regards, Malcolm On 1 January 2014 20:06, Adrian Mowat <adrian.mo...@gmail.com> wrote: > Hi Malcolm, > > I'm working through the examples and I am getting exceptions when I try > defining multiple routes. I noticed the 1.8.0 is mentioned in the docs but > the highest version on clojars is 1.7.0. Is clojars up to date. > > Stacktraces as follows > > user=> (def routes ["/" {"index.html" :index > #_=> "articles/" {"index.html" :article-index > #_=> "article.html" :article}}]) > #'user/routes > user=> (match-route routes "/index.html") > > java.lang.IllegalArgumentException: No implementation of method: > :resolve-handler of protocol: #'bidi.bidi/Matched found for class: > clojure.lang.PersistentHashMap > clojure.core/-cache-protocol-fn > core_deftype.clj: 541 > bidi.bidi/eval3017/fn/G > bidi.clj: 87 > bidi.bidi/match-pair > bidi.clj: 97 > bidi.bidi/match-route > bidi.clj: 193 > clojure.lang.RestFn.invoke > RestFn.java: 425 > user$eval3329.invoke > NO_SOURCE_FILE: 1 > user=> > clojure.lang.Compiler.eval Compiler.java: 6619 > clojure.lang.Compiler.eval > Compiler.java: 6582 > clojure.core/eval > core.clj: 2852 > clojure.main/repl/read-eval-print/fn > main.clj: 259 > clojure.main/repl/read-eval-print > main.clj: 259 > clojure.main/repl/fn > main.clj: 277 > clojure.main/repl > main.clj: 277 > clojure.lang.RestFn.invoke > RestFn.java: 1096 > clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn > interruptible_eval.clj: 56 > clojure.lang.AFn.applyToHelper > AFn.java: 159 > clojure.lang.AFn.applyTo > AFn.java: 151 > clojure.core/apply > core.clj: 617 > clojure.core/with-bindings* > core.clj: 1788 > clojure.lang.RestFn.invoke > RestFn.java: 425 > clojure.tools.nrepl.middleware.interruptible-eval/evaluate > interruptible_eval.clj: 41 > clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn > interruptible_eval.clj: 171 > clojure.core/comp/fn > core.clj: 2330 > clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn > interruptible_eval.clj: 138 > clojure.lang.AFn.run > AFn.java: 24 > java.util.concurrent.ThreadPoolExecutor.runWorker > ThreadPoolExecutor.java: 1110 > java.util.concurrent.ThreadPoolExecutor$Worker.run > ThreadPoolExecutor.java: 603 > java.lang.Thread.run > Thread.java: 722 > (match- > > user=> > > user=> (path-for routes :index) > > java.lang.IllegalArgumentException: No implementation of method: > :unresolve-handler of protocol: #'bidi.bidi/Matched found for class: > clojure.lang.PersistentHashMap > clojure.core/-cache-protocol-fn > core_deftype.clj: 541 > bidi.bidi/eval3017/fn/G > bidi.clj: 87 > bidi.bidi/unmatch-pair > bidi.clj: 149 > bidi.bidi/path-for > bidi.clj: 201 > clojure.lang.RestFn.invoke > RestFn.java: 425 > user$eval3331.invoke > NO_SOURCE_FILE: 1 > clojure.lang.Compiler.eval > Compiler.java: 6619 > clojure.lang.Compiler.eval > Compiler.java: 6582 > clojure.core/eval > core.clj: 2852 > clojure.main/repl/read-eval-print/fn > main.clj: 259 > clojure.main/repl/read-eval-print > main.clj: 259 > clojure.main/repl/fn > main.clj: 277 > clojure.main/repl > main.clj: 277 > clojure.lang.RestFn.invoke > RestFn.java: 1096 > clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn > interruptible_eval.clj: 56 > clojure.lang.AFn.applyToHelper > AFn.java: 159 > clojure.lang.AFn.applyTo > AFn.java: 151 > clojure.core/apply > core.clj: 617 > clojure.core/with-bindings* > core.clj: 1788 > user=> > clojure.lang.RestFn.invoke RestFn.java: 425 > clojure.tools.nrepl.middleware.interruptible-eval/evaluate > interruptible_eval.clj: 41 > clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn > interruptible_eval.clj: 171 > clojure.core/comp/fn > core.clj: 2330 > clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn > interruptible_eval.clj: 138 > clojure.lang.AFn.run > AFn.java: 24 > java.util.concurrent.ThreadPoolExecutor.runWorker > ThreadPoolExecutor.java: 1110 > java.util.concurrent.ThreadPoolExecutor$Worker.run > ThreadPoolExecutor.java: 603 > java.lang.Thread.run > Thread.java: 722 > > > > > On Wednesday, 1 January 2014 12:37:16 UTC, Malcolm Sparks wrote: >> >> I'd like to announce a new URI routing library called bidi. >> >> If you're planning to write HTTP/web applications in Clojure in 2014, >> chances are you'll be including hyperlinks (URIs) in your >> pages/views/templates. After all, this is what the web is all about. But >> the code that includes/generates your URIs can get tightly coupled with the >> code that dispatches on them (Compojure routes, etc.), this can lead to >> broken links if you're not careful. >> >> Having used Pedestal services in many of my systems, I'd made heavy use >> of the (url-for) function. But I found it difficult to extract the Pedestal >> routing code from the rest of the Pedestal back-end concepts. When I wanted >> to be able to use http-kit for another project, this prevented me from >> using Pedestal and I really missed the ability to form URIs - I wanted was >> the (url-for) function back! >> >> Like Pedestal, bidi starts with a data description of your routes - >> acting as the basis for both the generation of URIs and the dispatch to >> your handlers. However, bidi only offers URI routing and formation - >> nothing else - so it can be used for 'traditional' Ring web apps, http-kit, >> Liberator and so on. With a little work it should work well with >> ClojureScript too, since it is based on protocols rather than macros. >> >> You can find more about bidi, with code examples, here: >> https://github.com/juxt/bidi >> >> While I've been thinking about writing bidi for a long time (hoping >> someone else more capable than me would write it!), the actual code is very >> new and so all the usual disclaimers apply. However, I'd be very grateful >> for feedback on this new library - what you like and dislike about it, >> initial impressions, complaints, alternatives you know about and any >> questions etc.. >> >> And finally I'd like to wish everyone on this list a Happy New Year and >> the very best for your Clojure hacking activies in 2014. >> >> >> Malcolm >> >> JUXT - https://juxt.pro >> >> >> -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to a topic in the > Google Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/Ueeh-Sbw-AI/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.