Skip to content

Instantly share code, notes, and snippets.

@edoloughlin
Created February 21, 2011 12:40
Show Gist options
  • Save edoloughlin/837007 to your computer and use it in GitHub Desktop.
Save edoloughlin/837007 to your computer and use it in GitHub Desktop.
(prxml-data []) --> What gives?
(defn dispatcher
[node]
(condp = (class node)
clojure.lang.PersistentVector ::vector
clojure.lang.PersistentArrayMap ::map
clojure.lang.PersistentList ::sequence
java.lang.Integer ::atomic
java.lang.String ::atomic))
(defmulti prxml-data
"Make a data structure that can be consumed by clojure.contrib.prxml/prxml"
dispatcher)
(defmethod prxml-data ::vector
[node & parent-name]
[parent-name
(reduce vec (for [n node]
(prxml-data n node)))])
(defmethod prxml-data ::map
[node & parent-name]
(for [k (keys node)]
[k (prxml-data (k node))]))
(defmethod prxml-data ::sequence
[s & parent-name]
[parent-name (reduce concat (dbg (for [n s]
(prxml-data n))))])
(defmethod prxml-data ::atomic [n] n)
@edoloughlin
Copy link
Author

user=> (prxml-data [])
java.lang.IllegalArgumentException: No matching clause: clojure.core$class@4891d863 (NO_SOURCE_FILE:0)

What gives?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment