[Gd-chatter] r11242 - in trunk/libraries/network/koala: sources/examples/code-browser www/code-browser
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Tue Mar 20 01:12:55 CET 2007
Author: hannes
Date: Tue Mar 20 01:12:53 2007
New Revision: 11242
Added:
trunk/libraries/network/koala/sources/examples/code-browser/class.dylan (contents, props changed)
trunk/libraries/network/koala/sources/examples/code-browser/library-objects.dylan (contents, props changed)
trunk/libraries/network/koala/sources/examples/code-browser/module.dylan (contents, props changed)
trunk/libraries/network/koala/sources/examples/code-browser/search.dylan (contents, props changed)
trunk/libraries/network/koala/www/code-browser/library.dsp (contents, props changed)
trunk/libraries/network/koala/www/code-browser/module.dsp (contents, props changed)
Modified:
trunk/libraries/network/koala/sources/examples/code-browser/code-browser.lid
trunk/libraries/network/koala/sources/examples/code-browser/main.dylan
Log:
Job: minor
some more code-browser hacking:
library and module pages
Added: trunk/libraries/network/koala/sources/examples/code-browser/class.dylan
==============================================================================
--- (empty file)
+++ trunk/libraries/network/koala/sources/examples/code-browser/class.dylan Tue Mar 20 01:12:53 2007
@@ -0,0 +1,44 @@
+module: code-browser
+Synopsis: Brwose Open Dylan environment objects
+Author: Andreas Bogk, Bastian Mueller, Hannes Mehnert
+
+define body tag slots in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ do-all-slots(method(x) dynamic-bind(*environment-object* = x) do-body() end end, *project*, *environment-object*);
+end;
+
+define body tag direct-superclasses in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ for (superclass in class-direct-superclasses(*project*, *environment-object*))
+ dynamic-bind(*environment-object* = superclass)
+ do-body()
+ end;
+ end for;
+end;
+
+define body tag direct-subclasses in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ for (subclass in class-direct-subclasses(*project*, *environment-object*))
+ dynamic-bind(*environment-object* = subclass)
+ do-body()
+ end;
+ end for;
+end;
+
+define tag slot-name in code-browser
+ (page :: <code-browser-page>, response :: <response>)
+ ()
+ format(output-stream(response), "%s",
+ html-name(slot-getter(*project*, *environment-object*)));
+end;
+
+define tag slot-type in code-browser
+ (page :: <code-browser-page>, response :: <response>)
+ ()
+ format(output-stream(response), "%s",
+ html-name(slot-type(*project*, *environment-object*)));
+end;
+
Modified: trunk/libraries/network/koala/sources/examples/code-browser/code-browser.lid
==============================================================================
--- trunk/libraries/network/koala/sources/examples/code-browser/code-browser.lid (original)
+++ trunk/libraries/network/koala/sources/examples/code-browser/code-browser.lid Tue Mar 20 01:12:53 2007
@@ -1,3 +1,7 @@
library: code-browser
files: library
- main
+ main
+ search
+ class
+ library-objects
+ module
Added: trunk/libraries/network/koala/sources/examples/code-browser/library-objects.dylan
==============================================================================
--- (empty file)
+++ trunk/libraries/network/koala/sources/examples/code-browser/library-objects.dylan Tue Mar 20 01:12:53 2007
@@ -0,0 +1,34 @@
+module: code-browser
+Synopsis: Brwose Open Dylan environment objects
+Author: Andreas Bogk, Bastian Mueller, Hannes Mehnert
+
+define body tag modules in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ do-library-modules(method(x)
+ dynamic-bind(*environment-object* = x)
+ do-body()
+ end;
+ end, *project*, *environment-object*);
+end;
+
+define body tag defined-modules in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ do-library-modules(method(x)
+ dynamic-bind(*environment-object* = x)
+ do-body()
+ end;
+ end, *project*, *environment-object*, imported?: #f);
+end;
+
+define body tag used-libraries in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ do-used-definitions(method(x)
+ dynamic-bind(*environment-object* = x)
+ do-body()
+ end;
+ end, *project*, *environment-object*);
+end;
+
Modified: trunk/libraries/network/koala/sources/examples/code-browser/main.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/code-browser/main.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/code-browser/main.dylan Tue Mar 20 01:12:53 2007
@@ -18,54 +18,39 @@
(request, response)
let suffix = split(request.request-url-tail, '/');
//format-out("hit /: %= %d\n", suffix, suffix.size);
- if (suffix.size = 3)
+ if (suffix.size > 0)
let library-name = suffix[0];
- let module-name = suffix[1];
- let symbol-name = suffix[2];
let project = find-project(library-name);
open-project-compiler-database(project,
warning-callback: callback-handler,
error-handler: callback-handler);
parse-project-source(project);
- let library = project.project-library;
- let module = find-module(project, module-name, library: library);
- let symbol = find-environment-object(project,
- symbol-name,
- library: library,
- module: module);
dynamic-bind(*project* = project)
- dynamic-bind(*environment-object* = symbol)
- process-template(environment-object-page(*environment-object*), request, response);
+ let library = project.project-library;
+ if (suffix.size > 1)
+ let module-name = suffix[1];
+ let module = find-module(project, module-name, library: library);
+ if (suffix.size = 3)
+ let symbol-name = suffix[2];
+ let symbol
+ = find-environment-object(project, symbol-name, library: library, module: module);
+ dynamic-bind(*environment-object* = symbol)
+ process-template(environment-object-page(*environment-object*), request, response);
+ end;
+ else
+ dynamic-bind(*environment-object* = module)
+ process-template(environment-object-page(*environment-object*), request, response);
+ end;
+ end;
+ else
+ dynamic-bind(*environment-object* = library)
+ process-template(environment-object-page(*environment-object*), request, response);
+ end;
end;
end;
end;
end;
-define thread variable *results* = #f;
-
-define responder search-responder ("/search")
- (request, response)
- let search-string = get-query-value("search");
- let results = element($all-symbols, search-string, default: #f);
- dynamic-bind(*results* = results| #())
- process-template(*result-page*, request, response);
- end;
-end;
-define page result-page (<code-browser-page>)
- (source: "results.dsp")
-end;
-
-define body tag results in code-browser
- (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
- ()
- for (result in *results*)
- dynamic-bind(*project* = result.symbol-entry-project)
- dynamic-bind(*environment-object* = result.symbol-entry-name)
- do-body()
- end;
- end;
- end;
-end;
define page raw-source-page (<code-browser-page>)
(source: "raw-source.dsp")
@@ -140,14 +125,19 @@
"/", dylan-name(name-object));
end;
-define method do-canonical-link (slot :: <slot-object>)
- do-canonical-link(slot-type(*project*, slot))
+define method do-canonical-link (module-object :: <module-object>)
+ let module-name-object = environment-object-home-name(*project*, module-object);
+ let library-object = name-namespace(*project*, module-name-object);
+ concatenate("/symbol/", dylan-name(library-object),
+ "/", dylan-name(module-name-object));
end;
-define body tag slots in code-browser
- (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
- ()
- do-all-slots(method(x) dynamic-bind(*environment-object* = x) do-body() end end, *project*, *environment-object*);
+define method do-canonical-link (library-object :: <library-object>)
+ concatenate("/symbol/", dylan-name(library-object))
+end;
+
+define method do-canonical-link (slot :: <slot-object>)
+ do-canonical-link(slot-type(*project*, slot))
end;
define function dylan-name
@@ -171,40 +161,6 @@
()
format(response.output-stream, "%s", html-name(*environment-object*));
end;
-define body tag direct-superclasses in code-browser
- (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
- ()
- for (superclass in class-direct-superclasses(*project*, *environment-object*))
- dynamic-bind(*environment-object* = superclass)
- do-body()
- end;
- end for;
-end;
-
-
-define body tag direct-subclasses in code-browser
- (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
- ()
- for (subclass in class-direct-subclasses(*project*, *environment-object*))
- dynamic-bind(*environment-object* = subclass)
- do-body()
- end;
- end for;
-end;
-
-define tag slot-name in code-browser
- (page :: <code-browser-page>, response :: <response>)
- ()
- format(output-stream(response), "%s",
- html-name(slot-getter(*project*, *environment-object*)));
-end;
-
-define tag slot-type in code-browser
- (page :: <code-browser-page>, response :: <response>)
- ()
- format(output-stream(response), "%s",
- html-name(slot-type(*project*, *environment-object*)));
-end;
define body tag used-definitions in code-browser
(page :: <code-browser-page>, response :: <response>, do-body :: <function>)
()
@@ -352,18 +308,18 @@
end;
end;
-begin
- populate-symbol-table();
+//begin
+// populate-symbol-table();
// for (ele in key-sequence($all-symbols))
// format-out("%s %d\n", ele, $all-symbols[ele].size);
// end;
- main();
-end;
+// main();
+//end;
define function populate-symbol-table ()
let projs = collect-projects();
format-out("Found %d projects: %=\n", projs.size, projs);
- for (project-name in projs)
+ for (project-name in #("dylan")) //projs)
block()
format-out("Project %s\n", project-name);
let project = find-project(project-name);
Added: trunk/libraries/network/koala/sources/examples/code-browser/module.dylan
==============================================================================
--- (empty file)
+++ trunk/libraries/network/koala/sources/examples/code-browser/module.dylan Tue Mar 20 01:12:53 2007
@@ -0,0 +1,28 @@
+module: code-browser
+Synopsis: Brwose Open Dylan environment objects
+Author: Andreas Bogk, Bastian Mueller, Hannes Mehnert
+
+define body tag used-modules in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ do-used-definitions(method(x)
+ dynamic-bind(*environment-object* = x)
+ do-body()
+ end;
+ end, *project*, *environment-object*);
+end;
+
+define body tag module-definitions in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ do-module-definitions(method(x)
+ dynamic-bind(*environment-object* = x)
+ do-body()
+ end;
+ end, *project*, *environment-object*)
+end;
+
+begin
+ main()
+end;
+
Added: trunk/libraries/network/koala/sources/examples/code-browser/search.dylan
==============================================================================
--- (empty file)
+++ trunk/libraries/network/koala/sources/examples/code-browser/search.dylan Tue Mar 20 01:12:53 2007
@@ -0,0 +1,31 @@
+module: code-browser
+Synopsis: Brwose Open Dylan environment objects
+Author: Andreas Bogk, Bastian Mueller, Hannes Mehnert
+
+
+define thread variable *results* = #f;
+
+define responder search-responder ("/search")
+ (request, response)
+ let search-string = get-query-value("search");
+ let results = element($all-symbols, search-string, default: #());
+ dynamic-bind(*results* = results)
+ process-template(*result-page*, request, response);
+ end;
+end;
+define page result-page (<code-browser-page>)
+ (source: "results.dsp")
+end;
+
+define body tag results in code-browser
+ (page :: <code-browser-page>, response :: <response>, do-body :: <function>)
+ ()
+ for (result in *results*)
+ dynamic-bind(*project* = result.symbol-entry-project)
+ dynamic-bind(*environment-object* = result.symbol-entry-name)
+ do-body()
+ end;
+ end;
+ end;
+end;
+
Added: trunk/libraries/network/koala/www/code-browser/library.dsp
==============================================================================
--- (empty file)
+++ trunk/libraries/network/koala/www/code-browser/library.dsp Tue Mar 20 01:12:53 2007
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%dsp:taglib name="code-browser"/>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Library: <code-browser:display-name/></title>
+</head>
+<body>
+ Visible Modules:
+ <ul>
+ <code-browser:modules>
+ <li><a href="<code-browser:canonical-link/>"><code-browser:display-name/></a></li>
+ </code-browser:modules>
+ </ul>
+ Defined Modules:
+ <ul>
+ <code-browser:defined-modules>
+ <li><a href="<code-browser:canonical-link/>"><code-browser:display-name/></a></li>
+ </code-browser:defined-modules>
+ </ul>
+ Used Libraries:
+ <ul>
+ <code-browser:used-libraries>
+ <li><a href="<code-browser:canonical-link/>"><code-browser:display-name/></a></li>
+ </code-browser:used-libraries>
+ </ul>
+ Source:
+ <pre><code-browser:source/></pre>
+</body>
+</html>
Added: trunk/libraries/network/koala/www/code-browser/module.dsp
==============================================================================
--- (empty file)
+++ trunk/libraries/network/koala/www/code-browser/module.dsp Tue Mar 20 01:12:53 2007
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%dsp:taglib name="code-browser"/>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Module: <code-browser:display-name/></title>
+</head>
+<body>
+ Definitions:
+ <ul>
+ <code-browser:module-definitions>
+ <li><a href="<code-browser:canonical-link/>"><code-browser:display-name/></a></li>
+ </code-browser:module-definitions>
+ </ul>
+ Used Modules:
+ <ul>
+ <code-browser:used-modules>
+ <li><a href="<code-browser:canonical-link/>"><code-browser:display-name/></a></li>
+ </code-browser:used-modules>
+ </ul>
+ Source:
+ <pre><code-browser:source/></pre>
+</body>
+</html>
More information about the chatter
mailing list