   "Define a Ring handler function from a sequence of routes. The name may
   optionally be followed by a doc-string and metadata map."
   [name & routes]
-  (let [[name routes] (name-with-attributes name routes)]
+  (let [[name routes] (macro/name-with-attributes name routes)]
    `(def ~name (routes ~@routes))))
 
 (defmacro GET "Generate a GET route."

  "Evaluate the handler if the route matches the request."
  [route handler]
  (fn [request]
    (if-let [params (route-matches route request)]
      (handler (assoc-route-params request (decode-route-params params))))))

(defn- prepare-route

  (let [re-context {:__path-info #"|/.*"}]
    (cond
      (string? route)
       `(clout/route-compile ~(str route ":__path-info") ~re-context)
      (vector? route)
       `(clout/route-compile
         ~(str (first route) ":__path-info")
         ~(merge (apply hash-map (rest route)) re-context))
      :else
       `(clout/route-compile (str ~route ":__path-info") ~re-context))))

(defmacro context
  "Give all routes in the form a common path prefix and set of bindings.
