[Gd-chatter] r11185 - in trunk/libraries/network/koala: sources/examples/code-browser www/code-browser

turbo24prg at gwydiondylan.org turbo24prg at gwydiondylan.org
Sun Feb 18 05:23:15 CET 2007


Author: turbo24prg
Date: Sun Feb 18 05:23:14 2007
New Revision: 11185

Modified:
   trunk/libraries/network/koala/sources/examples/code-browser/library.dylan
   trunk/libraries/network/koala/sources/examples/code-browser/main.dylan
   trunk/libraries/network/koala/www/code-browser/project.dsp
Log:
Job: koala
 * implemented some more features of environment


Modified: trunk/libraries/network/koala/sources/examples/code-browser/library.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/code-browser/library.dylan	(original)
+++ trunk/libraries/network/koala/sources/examples/code-browser/library.dylan	Sun Feb 18 05:23:14 2007
@@ -23,7 +23,7 @@
   use source-records;
   use release-info;
   use regular-expressions;
-
+//use environment-deuce;
 end;
 
 
@@ -44,5 +44,6 @@
                application-filename,
                application-arguments };
   use release-info;
+//  use environment-deuce;
 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	Sun Feb 18 05:23:14 2007
@@ -2,14 +2,11 @@
 Synopsis: Brwose FD environment objects
 Author:   Andreas Bogk
 
-define class <code-browser-page> (<dylan-server-page>)
-  slot project;
-end;
+define thread variable *project* = #f; 
 
-define taglib code-browser ()
-end;
+define taglib code-browser () end;
 
-define page project-page (<code-browser-page>)
+define page code-browser-page (<dylan-server-page>)
   (url: "/project",
    source: "code-browser/project.dsp")
 end;
@@ -21,30 +18,31 @@
   if(~project-name | project-name = "")
     project-name := "minimal-console-compiler";
   end if;
-  page.project := find-project(project-name);
-  if(page.project)
-    open-project-compiler-database(page.project, 
-                                   warning-callback: callback-handler,
-                                   error-handler: callback-handler);
-    parse-project-source(page.project);
-    next-method();
-  else
-    application-error(format-string: "No such project %s", 
-                      format-arguments: vector(project-name));
-  end if;
+  dynamic-bind(*project* = find-project(project-name))
+    if (*project*)
+      open-project-compiler-database(*project*, 
+                                     warning-callback: callback-handler,
+                                     error-handler: callback-handler);
+      parse-project-source(*project*);
+      next-method();
+    else
+      application-error(format-string: "No such project %s", 
+                        format-arguments: vector(project-name));
+    end if;
+  end;
 end method respond-to-get;
 
 
 define tag project-name in code-browser
   (page :: <code-browser-page>, response :: <response>)
   ()
-  write(output-stream(response), page.project.project-name);
+  write(output-stream(response), *project*.project-name);
 end;
 
 define tag project in code-browser
   (page :: <code-browser-page>, response :: <response>)
   ()
-  format(output-stream(response), "%=", page.project);
+  format(output-stream(response), "%=", *project*);
 end;
 
 define tag project-sources in code-browser
@@ -52,7 +50,7 @@
   ()
   dynamic-bind(*check-source-record-date?* = #f)
     format(response.output-stream, "<pre>\n");
-    for(source in page.project.project-sources)
+    for(source in *project*.project-sources)
       block()
         format(response.output-stream,
                "<h3>%s</h3> module <strong>%s</strong>\n", 
@@ -74,25 +72,94 @@
 
 define function markup-dylan-source(source :: <string>)
  => (processed-source :: <string>);
-  regexp-replace(regexp-replace(source, "&", "&amp;"), "<", "&lt;");
+  regexp-replace(regexp-replace(regexp-replace(source, "&", "&amp;"), "<", "&lt;"), ">", "&gt;");
 end function markup-dylan-source;
 
+define tag project-direct-superclasses in code-browser
+  (page :: <code-browser-page>, response :: <response>)
+  ()
+    format(response.output-stream, "<ul>\n");
+    for (superclass in class-direct-superclasses(*project*, 
+     find-environment-object(*project*, "<string>", 
+      library: project-library(*project*), module: first(library-modules(*project*, project-library(*project*))))))
+        format(response.output-stream, "<li>%s</li>\n", markup-dylan-source(environment-object-display-name(*project*, superclass, #f)));
+    end for;
+    format(response.output-stream, "</ul>\n");
+end;
 
+define tag project-direct-subclasses in code-browser
+  (page :: <code-browser-page>, response :: <response>)
+  ()
+    format(response.output-stream, "<ul>\n");
+    for (subclass in class-direct-subclasses(*project*,
+     find-environment-object(*project*, "<string>",
+      library: project-library(*project*), module: first(library-modules(*project*, project-library(*project*))))))
+        format(response.output-stream, "<li>%s</li>\n", markup-dylan-source(environment-object-display-name(*project*, subclass, #f)));
+    end for;
+    format(response.output-stream, "</ul>\n");
+end;
 
 define tag project-used-libraries in code-browser
   (page :: <code-browser-page>, response :: <response>)
   ()
+ 
   format(response.output-stream, "<ul>\n");
-  for(library in project-used-libraries(page.project, page.project))
-    let name = environment-object-display-name(page.project, library, #f);
+  for (library in project-used-libraries(*project*, *project*))
+    let name = environment-object-display-name(*project*, library, #f);
     format(response.output-stream, 
            "<li><a href=\"/project?name=%s\">%s</a></li>\n",
            name, name);
   end for;
   format(response.output-stream, "</ul>\n");
-end; 
+end;
+
+define tag project-library in code-browser
+  (page :: <code-browser-page>, response :: <response>)
+  ()
+    format(response.output-stream, "%s", environment-object-display-name(*project*, project-library(*project*), #f));
+end;
+
 
+define tag project-modules in code-browser
+  (page :: <code-browser-page>, response :: <response>)
+  ()
+    format(response.output-stream, "<ul>\n");
+    for (module in library-modules(*project*, project-library(*project*)))
+      format(response.output-stream, "<li>%s</li>\n", environment-object-display-name(*project*, module, #f));
+    end for;
+    format(response.output-stream, "</ul>\n");
+end;
+
+define tag find-section-for-definition in code-browser
+  (page :: <code-browser-page>, response :: <response>)
+  ()
+    format(response.output-stream, "%s", markup-dylan-source(source-location-string(environment-object-source-location(*project*, find-environment-object(*project*, "concatenate",
+      library: project-library(*project*), module: first(library-modules(*project*, project-library(*project*))))))));
+end;
+
+define tag generic-function-object-methods in code-browser
+  (page :: <code-browser-page>, response :: <response>)
+  ()
+    format(response.output-stream, "<ul>\n");
+    for (m in generic-function-object-methods(*project*,
+     find-environment-object(*project*, "concatenate",
+      library: project-library(*project*), module: first(library-modules(*project*, project-library(*project*)))))) 
+        format(response.output-stream, "<li>%s</li>\n", markup-dylan-source(environment-object-display-name(*project*, m, #f)));
+    end;
+    format(response.output-stream, "</ul>\n");
+end;
+
+define tag find-section-for-method in code-browser
+  (page :: <code-browser-page>, response :: <response>)
+  ()
+    format(response.output-stream, "%s", markup-dylan-source(source-location-string(
+      environment-object-source-location(*project*, first(generic-function-object-methods(*project*,
+        find-environment-object(*project*, "concatenate",
+          library: project-library(*project*), module: first(library-modules(*project*, project-library(*project*))))))))));
+end;
 
+//environment-object-source-location  source-location-string
+//source-location-source-record
 
 /// Main
 

Modified: trunk/libraries/network/koala/www/code-browser/project.dsp
==============================================================================
--- trunk/libraries/network/koala/www/code-browser/project.dsp	(original)
+++ trunk/libraries/network/koala/www/code-browser/project.dsp	Sun Feb 18 05:23:14 2007
@@ -6,18 +6,23 @@
 </head>
 
 <body>
-  <div id="content">
-    <div id="name">
-	<h1>Browsing project <strong><code-browser:project-name/></strong>.</h1>
-    </div>
-    <div id="used-libraries">
+  <h1>Project: <code-browser:project-name/></h1>
+  <h2>Library: <code-browser:project-library/></h2>
+	<h2>Modules</h2>
+	<code-browser:project-modules/>	
 	<h2>Used libraries</h2>
 	<code-browser:project-used-libraries/>
-    </div>
-    <div id="source">
-      <h2>Source Code</h2>
-      <code-browser:project-sources/>
-    </div>
-  </div>
+	<h2>Superclasses of &lt;string&gt;</h2>
+	<code-browser:project-direct-superclasses/>
+	<h2>Subclasses of &lt;string&gt;</h2>
+	<code-browser:project-direct-subclasses/>
+	<h2>Methods of concatenate</h2>
+	<code-browser:generic-function-object-methods/>
+	<h2>Source for method concatenate</h2>
+	<code-browser:find-section-for-method/>
+	<h2>Definition of generic concatenate</h2>
+	<code-browser:find-section-for-definition/>
+	<h2>Source Code</h2>
+	<code-browser:project-sources/>
 </body>
 </html>



More information about the chatter mailing list