From 3358381510851552d7c3d3005dff884bf303d11f Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 12 Jun 2008 18:54:50 -0500 Subject: [PATCH] Better support for rest parameters on URLs --- extra/furnace/furnace.factor | 51 ++++++++++++++---------------- extra/webapps/blogs/blogs.factor | 2 ++ extra/webapps/blogs/edit-post.xml | 4 +-- extra/webapps/blogs/list-posts.xml | 6 ++-- extra/webapps/blogs/user-posts.xml | 8 ++--- extra/webapps/blogs/view-post.xml | 8 ++--- extra/webapps/wiki/articles.xml | 2 +- extra/webapps/wiki/changes.xml | 32 ++++++++++++------- extra/webapps/wiki/diff.xml | 4 +-- extra/webapps/wiki/page-common.xml | 8 ++--- extra/webapps/wiki/revisions.xml | 10 +++--- extra/webapps/wiki/user-edits.xml | 6 ++-- extra/webapps/wiki/view.xml | 2 +- extra/webapps/wiki/wiki.factor | 42 +++++++++++------------- 14 files changed, 93 insertions(+), 92 deletions(-) diff --git a/extra/furnace/furnace.factor b/extra/furnace/furnace.factor index 99ccf33eec..6ddd84a254 100644 --- a/extra/furnace/furnace.factor +++ b/extra/furnace/furnace.factor @@ -97,15 +97,21 @@ SYMBOL: exit-continuation dup empty? [ drop f ] [ "," split [ dup value ] H{ } map>assoc ] if ; -CHLOE: atom - [ children>string ] - [ "href" required-attr ] - [ "query" optional-attr parse-query-attr ] tri - - swap >>query - swap >>path - adjust-url relative-to-request - add-atom-feed ; +: a-url-path ( tag -- string ) + [ "href" required-attr ] [ "rest" optional-attr value ] bi + [ [ "/" ?tail drop "/" ] dip present 3append ] when* ; + +: a-url ( tag -- url ) + dup "value" optional-attr [ ] [ + + swap + [ a-url-path >>path ] + [ "query" optional-attr parse-query-attr >>query ] + bi + ] ?if + adjust-url relative-to-request ; + +CHLOE: atom [ children>string ] [ a-url ] bi add-atom-feed ; CHLOE: write-atom drop write-atom-feeds ; @@ -114,23 +120,11 @@ GENERIC: link-attr ( tag responder -- ) M: object link-attr 2drop ; : link-attrs ( tag -- ) + #! Side-effects current namespace. '[ , _ link-attr ] each-responder ; : a-start-tag ( tag -- ) - [ - - swap >>query - swap >>path - adjust-url relative-to-request =href - a> - ] with-scope ; + [ ] with-scope ; CHLOE: a [ a-start-tag ] @@ -158,11 +152,12 @@ CHLOE: a [ [
] [ form-magic ] bi diff --git a/extra/webapps/blogs/blogs.factor b/extra/webapps/blogs/blogs.factor index 8dbf7db690..882584f014 100644 --- a/extra/webapps/blogs/blogs.factor +++ b/extra/webapps/blogs/blogs.factor @@ -164,6 +164,8 @@ M: comment entity-url : ( -- action ) + "id" >>rest + [ validate-integer-id "id" value select-tuple from-object diff --git a/extra/webapps/blogs/edit-post.xml b/extra/webapps/blogs/edit-post.xml index da88a78ab0..4522f8606b 100644 --- a/extra/webapps/blogs/edit-post.xml +++ b/extra/webapps/blogs/edit-post.xml @@ -15,13 +15,13 @@ diff --git a/extra/webapps/blogs/list-posts.xml b/extra/webapps/blogs/list-posts.xml index 9c9685fe74..94a5a69775 100644 --- a/extra/webapps/blogs/list-posts.xml +++ b/extra/webapps/blogs/list-posts.xml @@ -7,7 +7,7 @@

- +

@@ -18,13 +18,13 @@