'! Copyright (C) 2008 Slava Pestov' Comment '\n' Text '! See http://factorcode.org/license.txt for BSD license.' Comment '\n' Text 'USING:' Keyword.Namespace ' ' Text 'accessors' Name.Namespace ' ' Text 'kernel' Name.Namespace ' ' Text 'hashtables' Name.Namespace ' ' Text 'calendar' Name.Namespace ' ' Text 'random' Name.Namespace ' ' Text 'assocs' Name.Namespace '\n' Text 'namespaces' Name.Namespace ' ' Text 'make' Name.Namespace ' ' Text 'splitting' Name.Namespace ' ' Text 'sequences' Name.Namespace ' ' Text 'sorting' Name.Namespace ' ' Text 'math.order' Name.Namespace ' ' Text 'present' Name.Namespace '\n' Text 'io.files' Name.Namespace ' ' Text 'io.directories' Name.Namespace ' ' Text 'io.encodings.ascii' Name.Namespace '\n' Text 'syndication' Name.Namespace ' ' Text 'farkup' Name.Namespace '\n' Text 'html.components' Name.Namespace ' ' Text 'html.forms' Name.Namespace '\n' Text 'http.server' Name.Namespace '\n' Text 'http.server.dispatchers' Name.Namespace '\n' Text 'furnace.actions' Name.Namespace '\n' Text 'furnace.utilities' Name.Namespace '\n' Text 'furnace.redirection' Name.Namespace '\n' Text 'furnace.auth' Name.Namespace '\n' Text 'furnace.auth.login' Name.Namespace '\n' Text 'furnace.boilerplate' Name.Namespace '\n' Text 'furnace.syndication' Name.Namespace '\n' Text 'validators' Name.Namespace '\n' Text 'db.types' Name.Namespace ' ' Text 'db.tuples' Name.Namespace ' ' Text 'lcs' Name.Namespace ' ' Text 'urls' Name.Namespace ' ' Text ';\n' Keyword 'IN:' Keyword.Namespace ' ' Text 'webapps.wiki' Name.Namespace '\n\n' Text ':' Keyword ' ' Text 'wiki-url' Name.Function ' ' Text '( ' Name.Function 'rest' Name.Variable ' ' Text 'path' Name.Variable ' ' Text '-- ' Name.Function 'url' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '[' Text ' ' Text '"$wiki/"' Literal.String ' ' Text '%' Text ' ' Text '%' Text ' ' Text '"/"' Literal.String ' ' Text '%' Text ' ' Text 'present' Text ' ' Text '%' Text ' ' Text ']' Text ' ' Text '""' Literal.String ' ' Text 'make' Text '\n ' Text '' Text ' ' Text 'swap ' Name.Builtin '>>path' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'view-url' Name.Function ' ' Text '( ' Name.Function 'title' Name.Variable ' ' Text '-- ' Name.Function 'url' Name.Variable ' ' Text ') ' Name.Function '"view"' Literal.String ' ' Text 'wiki-url' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'edit-url' Name.Function ' ' Text '( ' Name.Function 'title' Name.Variable ' ' Text '-- ' Name.Function 'url' Name.Variable ' ' Text ') ' Name.Function '"edit"' Literal.String ' ' Text 'wiki-url' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'revisions-url' Name.Function ' ' Text '( ' Name.Function 'title' Name.Variable ' ' Text '-- ' Name.Function 'url' Name.Variable ' ' Text ') ' Name.Function '"revisions"' Literal.String ' ' Text 'wiki-url' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'revision-url' Name.Function ' ' Text '( ' Name.Function 'id' Name.Variable ' ' Text '-- ' Name.Function 'url' Name.Variable ' ' Text ') ' Name.Function '"revision"' Literal.String ' ' Text 'wiki-url' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'user-edits-url' Name.Function ' ' Text '( ' Name.Function 'author' Name.Variable ' ' Text '-- ' Name.Function 'url' Name.Variable ' ' Text ') ' Name.Function '"user-edits"' Literal.String ' ' Text 'wiki-url' Text ' ' Text ';\n' Keyword '\n' Text 'TUPLE:' Keyword ' ' Text 'wiki' Name.Class ' < ' Text 'dispatcher' Name.Class ' ' Text ';\n' Keyword '\n' Text 'SYMBOL:' Keyword ' ' Text 'can-delete-wiki-articles?' Name.Function '\n\n' Text 'can-delete-wiki-articles?' Text ' ' Text 'define-capability' Text '\n\n' Text 'TUPLE:' Keyword ' ' Text 'article' Name.Class ' ' Text 'title' Name.Variable ' ' Text 'revision' Name.Variable ' ' Text ';\n' Keyword '\n' Text 'article' Text ' ' Text '"ARTICLES"' Literal.String ' ' Text '{' Text '\n ' Text '{' Text ' ' Text '"title"' Literal.String ' ' Text '"TITLE"' Literal.String ' ' Text '{' Text ' ' Text 'VARCHAR' Text ' ' Text '256 ' Literal.Number '}' Text ' ' Text '+not-null+' Text ' ' Text '+user-assigned-id+' Text ' ' Text '}' Text '\n ' Text '{' Text ' ' Text '"revision"' Literal.String ' ' Text '"REVISION"' Literal.String ' ' Text 'INTEGER' Text ' ' Text '+not-null+' Text ' ' Text '}' Text ' ' Text '! revision id' Comment '\n' Text '}' Text ' ' Text 'define-persistent' Text '\n\n' Text ':' Keyword ' ' Text '
' Name.Function ' ' Text '( ' Name.Function 'title' Name.Variable ' ' Text '-- ' Name.Function 'article' Name.Variable ' ' Text ') ' Name.Function 'article' Text ' ' Text 'new ' Name.Builtin 'swap ' Name.Builtin '>>title' Text ' ' Text ';\n' Keyword '\n' Text 'TUPLE:' Keyword ' ' Text 'revision' Name.Class ' ' Text 'id' Name.Variable ' ' Text 'title' Name.Variable ' ' Text 'author' Name.Variable ' ' Text 'date' Name.Variable ' ' Text 'content' Name.Variable ' ' Text 'description' Name.Variable ' ' Text ';\n' Keyword '\n' Text 'revision' Text ' ' Text '"REVISIONS"' Literal.String ' ' Text '{' Text '\n ' Text '{' Text ' ' Text '"id"' Literal.String ' ' Text '"ID"' Literal.String ' ' Text 'INTEGER' Text ' ' Text '+db-assigned-id+' Text ' ' Text '}' Text '\n ' Text '{' Text ' ' Text '"title"' Literal.String ' ' Text '"TITLE"' Literal.String ' ' Text '{' Text ' ' Text 'VARCHAR' Text ' ' Text '256 ' Literal.Number '}' Text ' ' Text '+not-null+' Text ' ' Text '}' Text ' ' Text '! article id' Comment '\n ' Text '{' Text ' ' Text '"author"' Literal.String ' ' Text '"AUTHOR"' Literal.String ' ' Text '{' Text ' ' Text 'VARCHAR' Text ' ' Text '256 ' Literal.Number '}' Text ' ' Text '+not-null+' Text ' ' Text '}' Text ' ' Text '! uid' Comment '\n ' Text '{' Text ' ' Text '"date"' Literal.String ' ' Text '"DATE"' Literal.String ' ' Text 'TIMESTAMP' Text ' ' Text '+not-null+' Text ' ' Text '}' Text '\n ' Text '{' Text ' ' Text '"content"' Literal.String ' ' Text '"CONTENT"' Literal.String ' ' Text 'TEXT' Text ' ' Text '+not-null+' Text ' ' Text '}' Text '\n ' Text '{' Text ' ' Text '"description"' Literal.String ' ' Text '"DESCRIPTION"' Literal.String ' ' Text 'TEXT' Text ' ' Text '}' Text '\n' Text '}' Text ' ' Text 'define-persistent' Text '\n\n' Text 'M:' Keyword ' ' Text 'revision' Name.Class ' ' Text 'feed-entry-title' Name.Function '\n ' Text '[' Text ' ' Text 'title>>' Text ' ' Text ']' Text ' ' Text '[' Text ' ' Text 'drop ' Name.Builtin '" by "' Literal.String ' ' Text ']' Text ' ' Text '[' Text ' ' Text 'author>>' Text ' ' Text ']' Text ' ' Text 'tri ' Name.Builtin '3append ' Name.Builtin ';\n' Keyword '\n' Text 'M:' Keyword ' ' Text 'revision' Name.Class ' ' Text 'feed-entry-date' Name.Function ' ' Text 'date>>' Text ' ' Text ';\n' Keyword '\n' Text 'M:' Keyword ' ' Text 'revision' Name.Class ' ' Text 'feed-entry-url' Name.Function ' ' Text 'id>>' Text ' ' Text 'revision-url' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'reverse-chronological-order' Name.Function ' ' Text '( ' Name.Function 'seq' Name.Variable ' ' Text '-- ' Name.Function 'sorted' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '[' Text ' ' Text 'date>>' Text ' ' Text ']' Text ' ' Text 'inv-sort-with' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function 'id' Name.Variable ' ' Text '-- ' Name.Function 'revision' Name.Variable ' ' Text ')\n' Name.Function ' ' Text 'revision' Text ' ' Text 'new ' Name.Builtin 'swap ' Name.Builtin '>>id' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'validate-title' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function ')\n' Name.Function ' ' Text '{' Text ' ' Text '{' Text ' ' Text '"title"' Literal.String ' ' Text '[' Text ' ' Text 'v-one-line' Text ' ' Text ']' Text ' ' Text '}' Text ' ' Text '}' Text ' ' Text 'validate-params' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'validate-author' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function ')\n' Name.Function ' ' Text '{' Text ' ' Text '{' Text ' ' Text '"author"' Literal.String ' ' Text '[' Text ' ' Text 'v-username' Text ' ' Text ']' Text ' ' Text '}' Text ' ' Text '}' Text ' ' Text 'validate-params' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function 'responder' Name.Variable ' ' Text '-- ' Name.Function "responder'" Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"page-common"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n ' Text '[' Text ' ' Text '"Front Page"' Literal.String ' ' Text 'view-url' Text ' ' Text '' Text ' ' Text ']' Text ' ' Text '>>display' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'latest-revision' Name.Function ' ' Text '( ' Name.Function 'title' Name.Variable ' ' Text '-- ' Name.Function 'revision/f' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '
' Text ' ' Text 'select-tuple' Text '\n ' Text 'dup ' Name.Builtin '[' Text ' ' Text 'revision>>' Text ' ' Text '' Text ' ' Text 'select-tuple' Text ' ' Text ']' Text ' ' Text 'when ' Name.Builtin ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '"title"' Literal.String ' ' Text '>>rest' Text '\n\n ' Text '[' Text ' ' Text 'validate-title' Text ' ' Text ']' Text ' ' Text '>>init' Text '\n\n ' Text '[' Text '\n ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text 'dup ' Name.Builtin 'latest-revision' Text ' ' Text '[' Text '\n ' Text 'from-object' Text '\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"view"' Literal.String ' ' Text '}' Text ' ' Text '' Text '\n ' Text ']' Text ' ' Text '[' Text '\n ' Text 'edit-url' Text ' ' Text '' Text '\n ' Text ']' Text ' ' Text '?if\n' Name.Builtin ' ' Text ']' Text ' ' Text '>>display' Text '\n\n ' Text '' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '"id"' Literal.String ' ' Text '>>rest' Text '\n\n ' Text '[' Text '\n ' Text 'validate-integer-id' Text '\n ' Text '"id"' Literal.String ' ' Text 'value' Text ' ' Text '' Text '\n ' Text 'select-tuple' Text ' ' Text 'from-object' Text '\n ' Text ']' Text ' ' Text '>>init' Text '\n\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"view"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text '\n \n ' Text '' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n ' Text '[' Text '\n ' Text 'article' Text ' ' Text 'new ' Name.Builtin 'select-tuples' Text ' ' Text 'random' Text '\n ' Text '[' Text ' ' Text 'title>>' Text ' ' Text ']' Text ' ' Text '[' Text ' ' Text '"Front Page"' Literal.String ' ' Text ']' Text ' ' Text 'if*\n' Name.Builtin ' ' Text 'view-url' Text ' ' Text '' Text '\n ' Text ']' Text ' ' Text '>>display' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'amend-article' Name.Function ' ' Text '( ' Name.Function 'revision' Name.Variable ' ' Text 'article' Name.Variable ' ' Text '-- ' Name.Function ')\n' Name.Function ' ' Text 'swap ' Name.Builtin 'id>>' Text ' ' Text '>>revision' Text ' ' Text 'update-tuple' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'add-article' Name.Function ' ' Text '( ' Name.Function 'revision' Name.Variable ' ' Text '-- ' Name.Function ')\n' Name.Function ' ' Text '[' Text ' ' Text 'title>>' Text ' ' Text ']' Text ' ' Text '[' Text ' ' Text 'id>>' Text ' ' Text ']' Text ' ' Text 'bi ' Name.Builtin 'article' Text ' ' Text 'boa ' Name.Builtin 'insert-tuple' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'add-revision' Name.Function ' ' Text '( ' Name.Function 'revision' Name.Variable ' ' Text '-- ' Name.Function ')\n' Name.Function ' ' Text '[' Text ' ' Text 'insert-tuple' Text ' ' Text ']' Text '\n ' Text '[' Text '\n ' Text 'dup ' Name.Builtin 'title>>' Text ' ' Text '
' Text ' ' Text 'select-tuple' Text '\n ' Text '[' Text ' ' Text 'amend-article' Text ' ' Text ']' Text ' ' Text '[' Text ' ' Text 'add-article' Text ' ' Text ']' Text ' ' Text 'if*\n' Name.Builtin ' ' Text ']' Text '\n ' Text 'bi ' Name.Builtin ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '"title"' Literal.String ' ' Text '>>rest' Text '\n\n ' Text '[' Text '\n ' Text 'validate-title' Text '\n\n ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text '
' Text ' ' Text 'select-tuple' Text '\n ' Text '[' Text ' ' Text 'revision>>' Text ' ' Text '' Text ' ' Text 'select-tuple' Text ' ' Text ']' Text '\n ' Text '[' Text ' ' Text 'f ' Name.Constant '' Text ' ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text '>>title' Text ' ' Text ']' Text '\n ' Text 'if*\n' Name.Builtin '\n ' Text '[' Text ' ' Text 'title>>' Text ' ' Text '"title"' Literal.String ' ' Text 'set-value' Text ' ' Text ']' Text '\n ' Text '[' Text ' ' Text 'content>>' Text ' ' Text '"content"' Literal.String ' ' Text 'set-value' Text ' ' Text ']' Text '\n ' Text 'bi\n' Name.Builtin ' ' Text ']' Text ' ' Text '>>init' Text '\n\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"edit"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text '\n\n ' Text '' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n ' Text '[' Text '\n ' Text 'validate-title' Text '\n\n ' Text '{' Text '\n ' Text '{' Text ' ' Text '"content"' Literal.String ' ' Text '[' Text ' ' Text 'v-required' Text ' ' Text ']' Text ' ' Text '}' Text '\n ' Text '{' Text ' ' Text '"description"' Literal.String ' ' Text '[' Text ' ' Text '[' Text ' ' Text 'v-one-line' Text ' ' Text ']' Text ' ' Text 'v-optional' Text ' ' Text ']' Text ' ' Text '}' Text '\n ' Text '}' Text ' ' Text 'validate-params' Text '\n\n ' Text 'f ' Name.Constant '' Text '\n ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text '>>title' Text '\n ' Text 'now' Text ' ' Text '>>date' Text '\n ' Text 'username' Text ' ' Text '>>author' Text '\n ' Text '"content"' Literal.String ' ' Text 'value' Text ' ' Text '>>content' Text '\n ' Text '"description"' Literal.String ' ' Text 'value' Text ' ' Text '>>description' Text '\n ' Text '[' Text ' ' Text 'add-revision' Text ' ' Text ']' Text ' ' Text '[' Text ' ' Text 'title>>' Text ' ' Text 'view-url' Text ' ' Text '' Text ' ' Text ']' Text ' ' Text 'bi\n' Name.Builtin ' ' Text ']' Text ' ' Text '>>submit' Text '\n\n ' Text '' Text '\n ' Text '"edit wiki articles"' Literal.String ' ' Text '>>description' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function 'responder' Name.Variable ' ' Text '-- ' Name.Function 'responder' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"revisions-common"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'list-revisions' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'seq' Name.Variable ' ' Text ')\n' Name.Function ' ' Text 'f ' Name.Constant '' Text ' ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text '>>title' Text ' ' Text 'select-tuples' Text '\n ' Text 'reverse-chronological-order' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '"title"' Literal.String ' ' Text '>>rest' Text '\n\n ' Text '[' Text '\n ' Text 'validate-title' Text '\n ' Text 'list-revisions' Text ' ' Text '"revisions"' Literal.String ' ' Text 'set-value' Text '\n ' Text ']' Text ' ' Text '>>init' Text '\n\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"revisions"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text '\n\n ' Text '' Text '\n ' Text '' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '"title"' Literal.String ' ' Text '>>rest' Text '\n\n ' Text '[' Text ' ' Text 'validate-title' Text ' ' Text ']' Text ' ' Text '>>init' Text '\n\n ' Text '[' Text ' ' Text '"Revisions of "' Literal.String ' ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text 'append ' Name.Builtin ']' Text ' ' Text '>>title' Text '\n\n ' Text '[' Text ' ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text 'revisions-url' Text ' ' Text ']' Text ' ' Text '>>url' Text '\n\n ' Text '[' Text ' ' Text 'list-revisions' Text ' ' Text ']' Text ' ' Text '>>entries' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'rollback-description' Name.Function ' ' Text '( ' Name.Function 'description' Name.Variable ' ' Text '-- ' Name.Function "description'" Name.Variable ' ' Text ')\n' Name.Function ' ' Text '[' Text ' ' Text '"Rollback of \'"' Literal.String ' ' Text '"\'"' Literal.String ' ' Text 'surround ' Name.Builtin ']' Text ' ' Text '[' Text ' ' Text '"Rollback"' Literal.String ' ' Text ']' Text ' ' Text 'if* ' Name.Builtin ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '[' Text ' ' Text 'validate-integer-id' Text ' ' Text ']' Text ' ' Text '>>validate' Text '\n\n ' Text '[' Text '\n ' Text '"id"' Literal.String ' ' Text 'value' Text ' ' Text '' Text ' ' Text 'select-tuple' Text '\n ' Text 'f ' Name.Constant '>>id' Text '\n ' Text 'now' Text ' ' Text '>>date' Text '\n ' Text 'username' Text ' ' Text '>>author' Text '\n ' Text '[' Text ' ' Text 'rollback-description' Text ' ' Text ']' Text ' ' Text 'change-description' Text '\n ' Text '[' Text ' ' Text 'add-revision' Text ' ' Text ']' Text '\n ' Text '[' Text ' ' Text 'title>>' Text ' ' Text 'revisions-url' Text ' ' Text '' Text ' ' Text ']' Text ' ' Text 'bi\n' Name.Builtin ' ' Text ']' Text ' ' Text '>>submit' Text '\n \n ' Text '' Text '\n ' Text '"rollback wiki articles"' Literal.String ' ' Text '>>description' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'list-changes' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'seq' Name.Variable ' ' Text ')\n' Name.Function ' ' Text 'f ' Name.Constant '' Text ' ' Text 'select-tuples' Text '\n ' Text 'reverse-chronological-order' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n ' Text '[' Text ' ' Text 'list-changes' Text ' ' Text '"revisions"' Literal.String ' ' Text 'set-value' Text ' ' Text ']' Text ' ' Text '>>init' Text '\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"changes"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text '\n\n ' Text '' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n ' Text '[' Text ' ' Text 'URL" $wiki/changes"' Literal.String ' ' Text ']' Text ' ' Text '>>url' Text '\n ' Text '[' Text ' ' Text '"All changes"' Literal.String ' ' Text ']' Text ' ' Text '>>title' Text '\n ' Text '[' Text ' ' Text 'list-changes' Text ' ' Text ']' Text ' ' Text '>>entries' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '[' Text ' ' Text 'validate-title' Text ' ' Text ']' Text ' ' Text '>>validate' Text '\n\n ' Text '[' Text '\n ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text '
' Text ' ' Text 'delete-tuples' Text '\n ' Text 'f ' Name.Constant '' Text ' ' Text '"title"' Literal.String ' ' Text 'value' Text ' ' Text '>>title' Text ' ' Text 'delete-tuples' Text '\n ' Text 'URL" $wiki"' Literal.String ' ' Text '' Text '\n ' Text ']' Text ' ' Text '>>submit' Text '\n\n ' Text '' Text '\n ' Text '"delete wiki articles"' Literal.String ' ' Text '>>description' Text '\n ' Text '{' Text ' ' Text 'can-delete-wiki-articles?' Text ' ' Text '}' Text ' ' Text '>>capabilities' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '[' Text '\n ' Text '{' Text '\n ' Text '{' Text ' ' Text '"old-id"' Literal.String ' ' Text '[' Text ' ' Text 'v-integer' Text ' ' Text ']' Text ' ' Text '}' Text '\n ' Text '{' Text ' ' Text '"new-id"' Literal.String ' ' Text '[' Text ' ' Text 'v-integer' Text ' ' Text ']' Text ' ' Text '}' Text '\n ' Text '}' Text ' ' Text 'validate-params' Text '\n\n ' Text '"old-id"' Literal.String ' ' Text '"new-id"' Literal.String '\n ' Text '[' Text ' ' Text 'value' Text ' ' Text '' Text ' ' Text 'select-tuple' Text ' ' Text ']' Text ' ' Text 'bi@\n' Name.Builtin ' ' Text '[' Text '\n ' Text 'over ' Name.Builtin 'title>>' Text ' ' Text '"title"' Literal.String ' ' Text 'set-value' Text '\n ' Text '[' Text ' ' Text '"old"' Literal.String ' ' Text '[' Text ' ' Text 'from-object' Text ' ' Text ']' Text ' ' Text 'nest-form' Text ' ' Text ']' Text '\n ' Text '[' Text ' ' Text '"new"' Literal.String ' ' Text '[' Text ' ' Text 'from-object' Text ' ' Text ']' Text ' ' Text 'nest-form' Text ' ' Text ']' Text '\n ' Text 'bi*\n' Name.Builtin ' ' Text ']' Text '\n ' Text '[' Text ' ' Text '[' Text ' ' Text 'content>>' Text ' ' Text 'string-lines' Text ' ' Text ']' Text ' ' Text 'bi@ ' Name.Builtin 'diff' Text ' ' Text '"diff"' Literal.String ' ' Text 'set-value' Text ' ' Text ']' Text '\n ' Text '2bi\n' Name.Builtin ' ' Text ']' Text ' ' Text '>>init' Text '\n\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"diff"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text '\n\n ' Text '' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '[' Text '\n ' Text 'f ' Name.Constant '
' Text ' ' Text 'select-tuples' Text '\n ' Text '[' Text ' ' Text 'title>>' Text ' ' Text ']' Text ' ' Text 'sort-with' Text '\n ' Text '"articles"' Literal.String ' ' Text 'set-value' Text '\n ' Text ']' Text ' ' Text '>>init' Text '\n\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"articles"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'list-user-edits' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'seq' Name.Variable ' ' Text ')\n' Name.Function ' ' Text 'f ' Name.Constant '' Text ' ' Text '"author"' Literal.String ' ' Text 'value' Text ' ' Text '>>author' Text ' ' Text 'select-tuples' Text '\n ' Text 'reverse-chronological-order' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n\n ' Text '"author"' Literal.String ' ' Text '>>rest' Text '\n\n ' Text '[' Text '\n ' Text 'validate-author' Text '\n ' Text 'list-user-edits' Text ' ' Text '"revisions"' Literal.String ' ' Text 'set-value' Text '\n ' Text ']' Text ' ' Text '>>init' Text '\n\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"user-edits"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text '\n\n ' Text '' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'action' Name.Variable ' ' Text ')\n' Name.Function ' ' Text '' Text '\n ' Text '"author"' Literal.String ' ' Text '>>rest' Text '\n ' Text '[' Text ' ' Text 'validate-author' Text ' ' Text ']' Text ' ' Text '>>init' Text '\n ' Text '[' Text ' ' Text '"Edits by "' Literal.String ' ' Text '"author"' Literal.String ' ' Text 'value' Text ' ' Text 'append ' Name.Builtin ']' Text ' ' Text '>>title' Text '\n ' Text '[' Text ' ' Text '"author"' Literal.String ' ' Text 'value' Text ' ' Text 'user-edits-url' Text ' ' Text ']' Text ' ' Text '>>url' Text '\n ' Text '[' Text ' ' Text 'list-user-edits' Text ' ' Text ']' Text ' ' Text '>>entries' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'init-sidebars' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function ')\n' Name.Function ' ' Text '"Contents"' Literal.String ' ' Text 'latest-revision' Text ' ' Text '[' Text ' ' Text '"contents"' Literal.String ' ' Text '[' Text ' ' Text 'from-object' Text ' ' Text ']' Text ' ' Text 'nest-form' Text ' ' Text ']' Text ' ' Text 'when*\n' Name.Builtin ' ' Text '"Footer"' Literal.String ' ' Text 'latest-revision' Text ' ' Text '[' Text ' ' Text '"footer"' Literal.String ' ' Text '[' Text ' ' Text 'from-object' Text ' ' Text ']' Text ' ' Text 'nest-form' Text ' ' Text ']' Text ' ' Text 'when* ' Name.Builtin ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'init-relative-link-prefix' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function ')\n' Name.Function ' ' Text 'URL" $wiki/view/"' Literal.String ' ' Text 'adjust-url' Text ' ' Text 'present' Text ' ' Text 'relative-link-prefix' Text ' ' Text 'set ' Name.Builtin ';\n' Keyword '\n' Text ':' Keyword ' ' Text '' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function 'dispatcher' Name.Variable ' ' Text ')\n' Name.Function ' ' Text 'wiki' Text ' ' Text 'new-dispatcher' Text '\n ' Text '' Text ' ' Text '""' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"view"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"revision"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"random"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"revisions"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"revisions.atom"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"diff"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"edit"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"submit"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"rollback"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"user-edits"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"articles"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"changes"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"user-edits.atom"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"changes.atom"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text ' ' Text '"delete"' Literal.String ' ' Text 'add-responder' Text '\n ' Text '' Text '\n ' Text '[' Text ' ' Text 'init-sidebars' Text ' ' Text 'init-relative-link-prefix' Text ' ' Text ']' Text ' ' Text '>>init' Text '\n ' Text '{' Text ' ' Text 'wiki' Text ' ' Text '"wiki-common"' Literal.String ' ' Text '}' Text ' ' Text '>>template' Text ' ' Text ';\n' Keyword '\n' Text ':' Keyword ' ' Text 'init-wiki' Name.Function ' ' Text '( ' Name.Function '-- ' Name.Function ')\n' Name.Function ' ' Text '"resource:extra/webapps/wiki/initial-content"' Literal.String ' ' Text '[' Text '\n ' Text '[' Text '\n ' Text 'dup ' Name.Builtin '".txt"' Literal.String ' ' Text '?tail' Text ' ' Text '[' Text '\n ' Text 'swap ' Name.Builtin 'ascii' Text ' ' Text 'file-contents' Text '\n ' Text 'f ' Name.Constant '' Text '\n ' Text 'swap ' Name.Builtin '>>content' Text '\n ' Text 'swap ' Name.Builtin '>>title' Text '\n ' Text '"slava"' Literal.String ' ' Text '>>author' Text '\n ' Text 'now' Text ' ' Text '>>date' Text '\n ' Text 'add-revision' Text '\n ' Text ']' Text ' ' Text '[' Text ' ' Text '2drop ' Name.Builtin ']' Text ' ' Text 'if\n' Name.Builtin ' ' Text ']' Text ' ' Text 'each\n' Name.Builtin ' ' Text ']' Text ' ' Text 'with-directory-files' Text ' ' Text ';\n' Keyword