Skip to content

Commit 6a2a8a7

Browse files
committed
pass the path through to the context-request function
This approach is simpler, pass the path down, rather than attaching it to the meta.
1 parent 493d108 commit 6a2a8a7

File tree

2 files changed

+20
-32
lines changed

2 files changed

+20
-32
lines changed

src/compojure/core.clj

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,12 @@
134134
(defn- wrap-route-info [handler route-info]
135135
(fn
136136
([request]
137-
(let [full-route (str (:compojure/context request) (second route-info))]
137+
(let [full-route (str (:compojure/context-path request) (second route-info))]
138138
(handler (assoc request
139139
:compojure/route route-info
140140
:compojure/full-route full-route))))
141141
([request respond raise]
142-
(let [full-route (str (:compojure/context request) (second route-info))]
142+
(let [full-route (str (:compojure/context-path request) (second route-info))]
143143
(handler (assoc request
144144
:compojure/route route-info
145145
:compojure/full-route full-route)
@@ -259,47 +259,34 @@
259259
(defn- remove-suffix [path suffix]
260260
(subs path 0 (- (count path) (count suffix))))
261261

262-
(defn- context-request [request route]
262+
(defn- context-request [request route context-path]
263263
(if-let [params (clout/route-matches route request)]
264264
(let [uri (:uri request)
265-
path (:path-info request uri)
266-
context (or (:context request) "")
267265
subpath (:__path-info params)
268-
params (dissoc params :__path-info)
269-
context-route (:context-route (meta route))]
266+
params (dissoc params :__path-info)]
270267
(-> request
271268
(assoc-route-params (decode-route-params params))
272269
(assoc :path-info (if (= subpath "") "/" subpath)
273270
:context (remove-suffix uri subpath))
274-
(update :compojure/context (fn [ctx] (str ctx context-route)))))))
271+
(update :compojure/context-path (fn [ctx] (str ctx context-path)))))))
275272

276273
(defn- context-route [route]
277274
(let [re-context {:__path-info #"|/.*"}]
278275
(cond
279276
(string? route)
280-
(with-meta (clout/route-compile (str route ":__path-info") re-context)
281-
{:context-route route})
277+
(clout/route-compile (str route ":__path-info") re-context)
282278
(and (vector? route) (literal? route))
283-
(with-meta (clout/route-compile
284-
(str (first route) ":__path-info")
285-
(merge (apply hash-map (rest route)) re-context))
286-
{:context-route (first route)})
279+
(clout/route-compile
280+
(str (first route) ":__path-info")
281+
(merge (apply hash-map (rest route)) re-context))
287282
(vector? route)
288-
`(let [route# ~(first route)]
289-
(with-meta
290-
(clout/route-compile
291-
(str route# ":__path-info")
292-
~(merge (apply hash-map (rest route)) re-context))
293-
{:context-route route#}))
283+
`(clout/route-compile
284+
(str ~(first route) ":__path-info")
285+
~(merge (apply hash-map (rest route)) re-context))
294286
:else
295-
`(let [route# ~route]
296-
(with-meta
297-
(clout/route-compile (str route# ":__path-info") ~re-context)
298-
(if (string? route#)
299-
{:context-route route#}
300-
{}))))))
301-
302-
(defn ^:no-doc make-context [route make-handler]
287+
`(clout/route-compile (str ~route ":__path-info") ~re-context))))
288+
289+
(defn ^:no-doc make-context [route path make-handler]
303290
(letfn [(handler
304291
([request]
305292
(when-let [context-handler (make-handler request)]
@@ -312,10 +299,10 @@
312299
handler
313300
(fn
314301
([request]
315-
(if-let [request (context-request request route)]
302+
(if-let [request (context-request request route path)]
316303
(handler request)))
317304
([request respond raise]
318-
(if-let [request (context-request request route)]
305+
(if-let [request (context-request request route path)]
319306
(handler request respond raise)
320307
(respond nil)))))))
321308

@@ -331,6 +318,7 @@
331318
[path args & routes]
332319
`(make-context
333320
~(context-route path)
321+
~path
334322
(fn [request#]
335323
(let-request [~args request#]
336324
(routes ~@routes)))))

test/compojure/core_test.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@
332332
(testing "request has matched route information with path prefix"
333333
(is (= (request :compojure/route)
334334
[:get "/bar/:bar-id"]))
335-
(is (= (request :compojure/context)
335+
(is (= (request :compojure/context-path)
336336
"/foo/:foo-id"))
337337
(is (= (request :compojure/full-route)
338338
"/foo/:foo-id/bar/:bar-id"))))
@@ -342,7 +342,7 @@
342342
(GET "/baz/:baz-id" req req)))
343343
request (route (mock/request :get "/foo/1/bar/2/baz/3"))]
344344
(testing "request has matched route information with multiple path prefix"
345-
(is (= (request :compojure/context)
345+
(is (= (request :compojure/context-path)
346346
"/foo/:foo-id/bar/:bar-id"))
347347
(is (= (request :compojure/full-route)
348348
"/foo/:foo-id/bar/:bar-id/baz/:baz-id")))))

0 commit comments

Comments
 (0)