[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