[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