[Gd-chatter] r11140 - trunk/libraries/network/koala/sources/koala

hannes at gwydiondylan.org hannes at gwydiondylan.org
Fri Jan 19 01:35:13 CET 2007


Author: hannes
Date: Fri Jan 19 01:35:10 2007
New Revision: 11140

Modified:
   trunk/libraries/network/koala/sources/koala/dsp.dylan
   trunk/libraries/network/koala/sources/koala/server.dylan
Log:
Job: minor
*implement directory pages which register as directory responders.
*log on startup responders and directory responders differently (directory responders get a * appended)

Modified: trunk/libraries/network/koala/sources/koala/dsp.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/koala/dsp.dylan	(original)
+++ trunk/libraries/network/koala/sources/koala/dsp.dylan	Fri Jan 19 01:35:10 2007
@@ -109,7 +109,7 @@
 
 // Applications should call this to register a page for a particular URL.
 define function register-page
-    (url :: <string>, page :: <page>, #key replace?)
+    (url :: <string>, page :: <page>, #key replace?, prefix?)
  => (responder :: <function>)
   bind (responder = curry(process-page, page))
     let source = source-location(page);
@@ -118,7 +118,7 @@
               iff(source,
                   sformat("source: %s", as(<string>, source)),
                   "dynamic"));
-    register-url(url, responder, replace?: replace?);
+    register-url(url, responder, replace?: replace?, prefix?: prefix?);
     *page-to-url-map*[page] := url;
     responder
   end
@@ -654,23 +654,33 @@
     { define page ?:name (?superclasses:*) (?make-args:*)
         ?slot-specs:*
       end }
- => { define class "<" ## ?name ## ">" (?superclasses) ?slot-specs end;
-      define variable "*" ## ?name ## "*" = make("<" ## ?name ## ">", ?make-args);
-      has-url?(?make-args) & register-page-urls("*" ## ?name ## "*", ?make-args);
+ => { page-aux(?name; ?superclasses; ?make-args; ?slot-specs);
+      has-url?(?make-args) & register-page-urls("*" ## ?name ## "*", ?make-args)
     }
+
+    { define directory page ?:name (?superclasses:*) (?make-args:*)
+        ?slot-specs:*
+      end }
+ => { page-aux(?name; ?superclasses; ?make-args; ?slot-specs);
+      has-url?(?make-args) & register-page-urls("*" ## ?name ## "*", ?make-args, prefix?: #t)
+    }
+
 end;
 
+define macro page-aux
+  { page-aux(?:name; ?superclasses:*; ?make-args:*; ?slot-specs:*) }
+   => { define class "<" ## ?name ## ">" (?superclasses) ?slot-specs end;
+        define variable "*" ## ?name ## "*" = make("<" ## ?name ## ">", ?make-args) }
+end;
 define function has-url? (#key url :: false-or(<string>), #all-keys)
  => (url-provided? :: <boolean>);
-  if (url)
-    #t
-  end;
+  url ~= #f
 end;
 
 define function register-page-urls
-    (page :: <page>, #key url :: <string>, alias, #all-keys)
+    (page :: <page>, #key url :: <string>, alias, prefix?, #all-keys)
  => (responder :: <function>)
-  let responder = register-page(url, page);
+  let responder = register-page(url, page, prefix?: prefix?);
   when (alias)
     for (alias in iff(instance?(alias, <string>),
                       list(alias),

Modified: trunk/libraries/network/koala/sources/koala/server.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/koala/server.dylan	(original)
+++ trunk/libraries/network/koala/sources/koala/server.dylan	Fri Jan 19 01:35:10 2007
@@ -864,7 +864,7 @@
   else
     add-object(server.url-map, url, pair(target, prefix?), replace?: replace?);
   end;
-  log-info("URL %s registered", url);
+  log-info("URL %s%s registered", url, if (prefix?) "/*" else "" end);
 end method register-url-now;
 
 // Find a responder function, if any.



More information about the chatter mailing list