[Gd-chatter] r10757 - trunk/libraries/koala/sources/examples/wiki

hannes at gwydiondylan.org hannes at gwydiondylan.org
Tue May 30 19:51:51 CEST 2006


Author: hannes
Date: Tue May 30 19:51:49 2006
New Revision: 10757

Modified:
   trunk/libraries/koala/sources/examples/wiki/classes.dylan
   trunk/libraries/koala/sources/examples/wiki/wiki.dylan
Log:
Bug: 7219
*remove importer script
*some dump/restore hacking


Modified: trunk/libraries/koala/sources/examples/wiki/classes.dylan
==============================================================================
--- trunk/libraries/koala/sources/examples/wiki/classes.dylan	(original)
+++ trunk/libraries/koala/sources/examples/wiki/classes.dylan	Tue May 30 19:51:49 2006
@@ -24,26 +24,26 @@
 end;
 
 define method find-page (title)
-  element(*pages*, title, default: #f);
+  element(storage(<wiki-page-content>), title, default: #f);
 end;
 
 define method find-backlinks (title)
   let res = make(<stretchy-vector>);
-  for (page in sort(key-sequence(*pages*)))
-    if (subsequence-position(latest-text(*pages*[page]), concatenate("[[", title, "]]")))
-      add!(res, *pages*[page])
+  for (page in sort(key-sequence(storage(<wiki-page-content>))))
+    if (subsequence-position(latest-text(storage(<wiki-page-content>)[page]), concatenate("[[", title, "]]")))
+      add!(res, storage(<wiki-page-content>)[page])
     end;
   end;
   res;
 end;
 
 define method remove-page (title)
-  remove-key!(*pages*, title);
+  remove-key!(storage(<wiki-page-content>), title);
 end;
 
 define method rename-page (old-title, new-title)
   let page = find-page(old-title);
-  *pages*[new-title] := page;
+  storage(<wiki-page-content>)[new-title] := page;
   //XXX write a changelog entry
   remove-page(old-title);
 end;
@@ -61,7 +61,7 @@
   let page = find-page(title);
   unless (page)
     page := make(<wiki-page-content>, page-title: title);
-    *pages*[title] := page;
+    storage(<wiki-page-content>)[title] := page;
   end;
   let version = size(page.revisions) + 1;
   unless (version > 1 & content = page.latest-text)

Modified: trunk/libraries/koala/sources/examples/wiki/wiki.dylan
==============================================================================
--- trunk/libraries/koala/sources/examples/wiki/wiki.dylan	(original)
+++ trunk/libraries/koala/sources/examples/wiki/wiki.dylan	Tue May 30 19:51:49 2006
@@ -4,16 +4,9 @@
 Copyright: This code is in the public domain.
 
 
-// This can be set to a more appropriate value via the <wiki> element
-// in koala-config.xml.
-define variable *database-directory* :: <locator>
-  = as(<directory-locator>, "www/wiki/content");
-
 define method storage-type (type == <wiki-page-content>) => (res)
   <string-table>;
 end;
-define variable *pages* = storage(<wiki-page-content>);
-
 
 //XXX: TODO:
 //"__" and "=" markup
@@ -285,14 +278,14 @@
                                         summary: summary));
           end;
         end;
-  for (title in key-sequence(*pages*))
+  for (title in key-sequence(storage(<wiki-page-content>)))
     let title-weight = search-text(title, words);
     if (include-old-versions?)
       map(method(x)
             maybe-add(x.content, x.page-version, title, title-weight)
-          end, *pages*[title].revisions);
+          end, storage(<wiki-page-content>)[title].revisions);
     else
-      let page = *pages*[title].revisions.last;
+      let page = storage(<wiki-page-content>)[title].revisions.last;
       maybe-add(page.content, page.page-version, title, title-weight);
     end;
   end;
@@ -417,8 +410,8 @@
     (count :: <string>)
     let content = find-page(*title* | "(no title)");
     if (content)
-      let count = min(as(<integer>, count), *pages*[*title*].revisions.size);
-      let revs = copy-sequence(reverse(*pages*[*title*].revisions), end: count);
+      let count = min(as(<integer>, count), storage(<wiki-page-content>)[*title*].revisions.size);
+      let revs = copy-sequence(reverse(storage(<wiki-page-content>)[*title*].revisions), end: count);
       for(rev in revs)
         dynamic-bind (*version* = rev.page-version)
           do-body();
@@ -460,7 +453,7 @@
 define body tag show-index in wiki
   (page :: <wiki-page>, response :: <response>, do-body :: <function>)
   ()
-  for (key in sort(key-sequence(*pages*)))
+  for (key in sort(key-sequence(storage(<wiki-page-content>))))
     dynamic-bind(*title* = key)
       do-body();
     end;
@@ -529,13 +522,12 @@
 
 define thread variable *change* = #f;
 
-define variable *changes* = storage(<wiki-page-diff>);
 define body tag gen-recent-changes in wiki
     (page :: <recent-changes-page>, response :: <response>, do-body :: <function>)
     (count)
   let count = string-to-integer(get-query-value("count") | count);
   for (i from 0 below count,
-       change in reverse(*changes*))
+       change in reverse(storage(<wiki-page-diff>)))
     dynamic-bind(*change* = change)
       do-body()
     end;
@@ -594,51 +586,6 @@
   write(output-stream(response), *change*.comment);
 end;
 
-// Tell Koala how to parse the wiki config element.
-//
-define sideways method process-config-element
-    (node :: <xml-element>, name == #"wiki")
-  let cdir = get-attr(node, #"content-directory");
-  if (~cdir)
-    log-warning("Wiki - No content-directory specified.  Will use ./content/");
-    cdir := "./content";
-  end;
-  *database-directory* := as(<directory-locator>, cdir);
-  log-info("Wiki content directory = %s", as(<string>, *database-directory*));
-  import-database();
-end;
-
-define method import-database ()
-  let changelist = make(<string-table>);
-  local method import-file (dir-loc, file-name, file-type)
-          if (file-type = #"file")
-            let filename-parts = split(file-name, separator: ".");
-            let title = base64-decode(filename-parts[0]);
-            unless(element(changelist, title, default: #f))
-              changelist[title] := make(<vector>, size: 42);
-            end;
-            let file-loc = merge-locators(as(<file-locator>, file-name), dir-loc);
-            let date = file-property(file-loc, #"creation-date");
-            let index = if (filename-parts.size = 2)
-                          string-to-integer(filename-parts[1])
-                        else
-                          0
-                        end;
-            changelist[title][index] := file-contents(file-loc);
-          end;  
-        end;
-  if (*pages*.size = 0)
-    do-directory(import-file, *database-directory*);
-  end;
-  for (name in key-sequence(changelist))
-    for (ele in changelist[name])
-      if (ele)
-        save-page(name, ele)
-      end;
-    end;
-  end;
-end;
-
 define function main
     () => ()
   let config-file =
@@ -646,6 +593,7 @@
       application-arguments()[0]
     end;
   //register-url("/wiki/wiki.css", maybe-serve-static-file);
+  dumper();
   start-server(config-file: config-file);
 end;
 



More information about the chatter mailing list