From Rostislav Hristov Wed Jun 1 14:31:28 2005 From: Rostislav Hristov (Rostislav Hristov) Date: Wed, 1 Jun 2005 17:31:28 +0300 Subject: [as2api-dev] About as2api and EnFlash In-Reply-To: <20050531124709.GA29584@vhost.badgers-in-foil.co.uk> References: <435de143050530135233324701@mail.gmail.com> <20050531124709.GA29584@vhost.badgers-in-foil.co.uk> Message-ID: <435de14305060107311f2365fe@mail.gmail.com> Hi David, thak you for taking my revisions seriously :) I'm going to explain them in details: - The biggest bugfix was the HEAD tag closing, just moving an "yield out" statement a line downwards - Mozilla browsers seem to have strange hover effect with anchors, so I made them - I have remove the TARGET attribute from each cross frame link and replaced it with a simple BASE tag in the HEAD that appears only once per page - Proper DOCTYPE for frameset and plain pages. I wanted to use XHTML 1.1, but it disables the usage of BASE tag mentioned above. XHTML 1.0 Transitional looks fair enough - Some CSS classes has been removed since some elements can be styled directly by tag name - I have removed the second column of the Summary tables, once descriptions are implemented it should be restored - The Summary tables are the only of its kind left. The latest markup trend says that tables should be used only for tabular data and that's why I replaced all other tables with UL/LI lists or something more adequate - Added HR tags between Field and Method items, I wanted to skip the last HR tag and it worked for Fields - There are some extra SPAN tags in the navigation bar that makes links looks rounded. This is related to the style of my website and can be skipped - Some empty DL tags had been generated in some cases and I tried to remove= them - I have changed frameset.html to index.html since it simplifies deploying on a webserver Configurable parameters will be the next good thing about as2api. This is the year of the command line tools for Flash, so you may not invest much time in GUIs. Cheers, Rostislav On 5/31/05, David Holroyd wrote: > Hi there, >=20 > On Mon, May 30, 2005 at 11:52:27PM +0300, Rostislav Hristov wrote: > > thank you once again for this wonderful tool. I'm digging inside it > > the last two week and I've made a number of customizations. I wrote > > something about my story with as2api at > > http://www.asual.com/blog/page/actionscript/2005/05/30/documenting-with= -as2api.html. > > There you can find my changes and I'll be happy if you find them > > useful. The current CSS follows our style, but I can easily prepare a > > standart JavaDoc look and feel. >=20 > I downloaded your modified sources, and ran a diff to see the changes. >=20 > I don't have time to look through in detail yet, but attach the patch in > case anyone else is enterested. >=20 > On having a quick skim though, I see a few bits where you've hardcoded > things specific to your project (which was necessary, as they're things > that aren't configurable). So, when I get the time, I'll work though and > cherry pick the bits I like ;) >=20 >=20 > Many thanks for sharing your hard work! >=20 > dave >=20 > -- > http://david.holroyd.me.uk/ >=20 > _______________________________________________ > as2api-dev mailing list > as2api-dev@lists.badgers-in-foil.co.uk > http://lists.badgers-in-foil.co.uk/mailman/listinfo/as2api-dev > From dave at badgers-in-foil.co.uk Wed Jun 1 22:45:08 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 01 Jun 2005 22:45:08 +0000 Subject: [as2api-dev] [CVS trunk] Fix dumb typo in method name (thanks Rostislav) Message-ID:
Commit in trunk/as2api on MAIN
api_model.rb+1-175 -> 76
Fix dumb typo in method name (thanks Rostislav)

trunk/as2api
api_model.rb 75 -> 76
--- trunk/as2api/api_model.rb	2005-05-14 17:46:15 UTC (rev 75)
+++ trunk/as2api/api_model.rb	2005-06-01 22:45:06 UTC (rev 76)
@@ -230,7 +230,7 @@
     @args
   end
 
-  def agument(index)
+  def argument(index)
     @args[index]
   end
 end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Wed Jun 1 22:52:12 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 01 Jun 2005 22:52:12 +0000 Subject: [as2api-dev] [CVS trunk] Doh -- don't put the etc. inside the -- thanks Rostislav Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+1-176 -> 77
Doh -- don't put the <body> etc. inside the <head> -- thanks Rostislav

trunk/as2api
html_output.rb 76 -> 77
--- trunk/as2api/html_output.rb	2005-06-01 22:45:06 UTC (rev 76)
+++ trunk/as2api/html_output.rb	2005-06-01 22:52:08 UTC (rev 77)
@@ -348,8 +348,8 @@
 	                 "type"=>"text/css",
 	                 "href"=>base_path("style.css"))
         out.element_meta("name"=>"generator", "content"=>"http://www.badgers-in-foil.co.uk/projects/as2api/")
-	yield out
       end
+      yield out
     end
   end
 end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Wed Jun 1 23:00:27 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 01 Jun 2005 23:00:27 +0000 Subject: [as2api-dev] [CVS trunk] Comment-out empty table cell until nearby TODO gets done Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+3-377 -> 78
Comment-out empty table cell until nearby TODO gets done

trunk/as2api
html_output.rb 77 -> 78
--- trunk/as2api/html_output.rb	2005-06-01 22:52:08 UTC (rev 77)
+++ trunk/as2api/html_output.rb	2005-06-01 23:00:25 UTC (rev 78)
@@ -630,7 +630,7 @@
       interfaces.sort!
       out.element_table("class"=>"summary_list", "summary"=>"") do
 	out.element_tr do
-	  out.element_th("Interface Summary", {"colspan"=>"2"})
+	  out.element_th("Interface Summary")
 	end
 	interfaces.each do |type|
 	  out.element_tr do
@@ -638,9 +638,9 @@
 	    out.element_td do
 	      out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
 	    end
-	    out.element_td do
+	    #out.element_td do
 	      # TODO: package description
-	    end
+	    #end
 	  end
 	end
       end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Wed Jun 1 23:01:20 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 01 Jun 2005 23:01:20 +0000 Subject: [as2api-dev] [CVS trunk] Comment-out empty table cell until nearby TODO gets done Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+3-378 -> 79
Comment-out empty table cell until nearby TODO gets done

trunk/as2api
html_output.rb 78 -> 79
--- trunk/as2api/html_output.rb	2005-06-01 23:00:25 UTC (rev 78)
+++ trunk/as2api/html_output.rb	2005-06-01 23:01:18 UTC (rev 79)
@@ -650,7 +650,7 @@
       classes.sort!
       out.element_table("class"=>"summary_list", "summary"=>"") do
 	out.element_tr do
-	  out.element_th("Class Summary", {"colspan"=>"2"})
+	  out.element_th("Class Summary")
 	end
 	classes.each do |type|
 	  out.element_tr do
@@ -658,9 +658,9 @@
 	    out.element_td do
 	      out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
 	    end
-	    out.element_td do
+	    #out.element_td do
 	      # TODO: package description
-	    end
+	    #end
 	  end
 	end
       end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Wed Jun 1 23:28:31 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 01 Jun 2005 23:28:31 +0000 Subject: [as2api-dev] [CVS trunk] Remove yucky nav table layouts inherited from JavaDoc & replace with nice lists Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+22-4179 -> 80
Remove yucky nav table layouts inherited from JavaDoc & replace with nice lists
(thanks to Rostislav for the suggestion)

trunk/as2api
html_output.rb 79 -> 80
--- trunk/as2api/html_output.rb	2005-06-01 23:01:18 UTC (rev 79)
+++ trunk/as2api/html_output.rb	2005-06-01 23:28:29 UTC (rev 80)
@@ -672,23 +672,18 @@
 def package_frame(package)
   html_file("package-frame", "Package #{package_display_name_for(package)} API Naviation") do |out|
     out.element_body do
-      # TODO: don't use <strong>
-      out.element_strong do
+      out.element_p do
 	out.element_a(package_display_name_for(package), {"href"=>"package-summary.html", "target"=>"type_frame"})
       end
       interfaces = package.interfaces
       unless interfaces.empty?
 	interfaces.sort!
-	out.element_table("class"=>"navigation_list") do
-	  out.element_tr do
-	    out.element_th("Interfaces")
-	  end
+	out.element_h3("Interfaces")
+	out.element_ul("class"=>"navigation_list") do
 	  interfaces.each do |type|
-	    out.element_tr do
 	
-	      out.element_td do
-		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
-	      end
+	    out.element_li do
+	      out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
 	    end
 	  end
 	end
@@ -696,16 +691,12 @@
       classes = package.classes
       unless classes.empty?
 	classes.sort!
-	out.element_table("class"=>"navigation_list") do
-	  out.element_tr do
-	    out.element_th("Classes")
-	  end
+	out.element_h3("Classes")
+	out.element_ul("class"=>"navigation_list") do
 	  classes.each do |type|
-	    out.element_tr do
 	
-	      out.element_td do
-		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
-	      end
+	    out.element_li do
+	      out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
 	    end
 	  end
 	end
@@ -754,25 +745,19 @@
 def overview_frame(type_agregator)
   html_file("overview-frame", "API Overview") do |out|
     out.element_body do
-      out.element_table("class"=>"navigation_list") do
-	out.element_tr do
-	  out.element_th("Packages")
-	end
-	  out.element_tr do
+      out.element_h3("Packages")
+      out.element_ul("class"=>"navigation_list") do
       
-	    out.element_td do
-	      out.element_a("(All Types)", {"href"=>"all-types-frame.html", "target"=>"current_package_frame"})
-	    end
-	  end
+	out.element_li do
+	  out.element_a("(All Types)", {"href"=>"all-types-frame.html", "target"=>"current_package_frame"})
+	end
 	packages = type_agregator.packages.sort
 	packages.each do |package|
-	  out.element_tr do
       
-	    out.element_td do
-	      name = package_display_name_for(package)
-	      
-	      out.element_a(name, {"href"=>package_link_for(package, "package-frame.html"), "target"=>"current_package_frame", "title"=>name})
-	    end
+	  out.element_li do
+	    name = package_display_name_for(package)
+	    
+	    out.element_a(name, {"href"=>package_link_for(package, "package-frame.html"), "target"=>"current_package_frame", "title"=>name})
 	  end
 	end
       end
@@ -796,10 +781,8 @@
 def all_types_frame(type_agregator)
   html_file("all-types-frame", "as2api") do |out|
     out.element_body do
-      out.element_table("class"=>"navigation_list") do
-        out.element_tr do
-	  out.element_th("All Types")
-	end
+      out.element_h3("All Types")
+      out.element_ul("class"=>"navigation_list") do
 	types = type_agregator.types.sort do |a,b|
 	  cmp = a.unqualified_name.downcase <=> b.unqualified_name.downcase
 	  if cmp == 0
@@ -811,10 +794,8 @@
 	types.each do |type|
 	  if type.document?
 	    href = type.qualified_name.gsub(/\./, "/") + ".html"
-            out.element_tr do
-              out.element_td do
-	        out.element_a(type.unqualified_name, {"href"=>href, "title"=>type.qualified_name, "target"=>"type_frame"})
-	      end
+	    out.element_li do
+	      out.element_a(type.unqualified_name, {"href"=>href, "title"=>type.qualified_name, "target"=>"type_frame"})
 	    end
 	  end
 	end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Wed Jun 1 23:34:03 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 01 Jun 2005 23:34:03 +0000 Subject: [as2api-dev] [CVS trunk] Comment-out empty table cell until nearby TODO gets done Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+3-380 -> 81
Comment-out empty table cell until nearby TODO gets done

trunk/as2api
html_output.rb 80 -> 81
--- trunk/as2api/html_output.rb	2005-06-01 23:28:29 UTC (rev 80)
+++ trunk/as2api/html_output.rb	2005-06-01 23:34:00 UTC (rev 81)
@@ -722,7 +722,7 @@
     out.element_h1("API Overview")
     out.element_table("class"=>"summary_list", "summary"=>"") do
       out.element_tr do
-	out.element_th("Packages", {"colspan"=>"2"})
+	out.element_th("Packages")
       end
       packages = type_agregator.packages.sort
       packages.each do |package|
@@ -732,9 +732,9 @@
 	    name = package_display_name_for(package)
 	    out.element_a(name, {"href"=>package_link_for(package, "package-summary.html")})
 	  end
-	  out.element_td do
+	  #out.element_td do
 	    # TODO: package description
-	  end
+	  #end
 	end
       end
     end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Wed Jun 1 23:36:50 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 01 Jun 2005 23:36:50 +0000 Subject: [as2api-dev] [CVS trunk] Turn name of package containing the indexed type into a link as well Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+1-181 -> 82
Turn name of package containing the indexed type into a link as well

trunk/as2api
html_output.rb 81 -> 82
--- trunk/as2api/html_output.rb	2005-06-01 23:34:00 UTC (rev 81)
+++ trunk/as2api/html_output.rb	2005-06-01 23:36:48 UTC (rev 82)
@@ -845,7 +845,7 @@
   def link(out)
     link_type(out, @astype)
     out.pcdata(" in package ")
-    out.pcdata(@astype.package_name)
+    out.element_a(@astype.package_name, {"href"=>"../" + @astype.package_name.gsub(".", "/") + "/package-summary.html"})
   end
 end
 
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Wed Jun 1 23:47:08 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 01 Jun 2005 23:47:08 +0000 Subject: [as2api-dev] [CVS trunk] Only produce
for inherited methods if there is actually a supertype Message-ID:
Commit in trunk/as2api on MAIN
api_model.rb+482 -> 83
html_output.rb+11-982 -> 83
+15-9
2 modified files
Only produce <dl> for inherited methods if there is actually a supertype
(thanks to Rostislav for the suggestion)

trunk/as2api
api_model.rb 82 -> 83
--- trunk/as2api/api_model.rb	2005-06-01 23:36:48 UTC (rev 82)
+++ trunk/as2api/api_model.rb	2005-06-01 23:47:07 UTC (rev 83)
@@ -68,6 +68,10 @@
     end
   end
 
+  def has_ancestor?
+    !@parent.nil? && @parent.resolved?
+  end
+
   # The whole type name, including package-prefix
   def qualified_name
     if @package_name == ""

trunk/as2api
html_output.rb 82 -> 83
--- trunk/as2api/html_output.rb	2005-06-01 23:36:48 UTC (rev 82)
+++ trunk/as2api/html_output.rb	2005-06-01 23:47:07 UTC (rev 83)
@@ -470,16 +470,18 @@
     end
     known_method_names = []
     list_methods(out, type, known_method_names)
-    out.element_dl do
-      type.each_ancestor do |type|
-	if type.methods?
-	  out.element_dt do
-	    out.pcdata("Inherited from ")
-	    link_type(out, type)
+    if type.has_ancestor?
+      out.element_dl do
+	type.each_ancestor do |type|
+	  if type.methods?
+	    out.element_dt do
+	      out.pcdata("Inherited from ")
+	      link_type(out, type)
+	    end
+	    out.element_dd do
+	      list_methods(out, type, known_method_names, link_for_type(type))
+	    end
 	  end
-	  out.element_dd do
-	    list_methods(out, type, known_method_names, link_for_type(type))
-	  end
 	end
       end
     end
CVSspam 0.2.11
From phil at produxion.net Thu Jun 2 00:11:51 2005 From: phil at produxion.net (Phil Powell) Date: Thu, 2 Jun 2005 01:11:51 +0100 Subject: [as2api-dev] [CVS trunk] Only produce
for inherited methods if there is actually a supertype In-Reply-To: References: Message-ID: <1f563f3aee5983a4dd2a4ad83bc63559@produxion.net> All recent commits: top work Mr Holroyd! -Phil On 2 Jun 2005, at 12:47 am, David Holroyd wrote: > Commit in trunk/as2api on MAIN > api_model.rb > +4 > 82 -> 83 > html_output.rb > +11 > -9 > 82 -> 83 > +15 > -9 > 2 modified files > Only produce
for inherited methods if there is actually a > supertype > (thanks to Rostislav for the suggestion) > > trunk/as2api > api_model.rb 82 -> 83 > --- trunk/as2api/api_model.rb 2005-06-01 23:36:48 UTC (rev 82) > +++ trunk/as2api/api_model.rb 2005-06-01 23:47:07 UTC (rev 83) > @@ -68,6 +68,10 @@ > > end > end > > > + def has_ancestor? > + !@parent.nil? && @parent.resolved? > + end > + > > # The whole type name, including package-prefix > def qualified_name > if @package_name == "" > > trunk/as2api > html_output.rb 82 -> 83 > --- trunk/as2api/html_output.rb 2005-06-01 23:36:48 UTC (rev 82) > +++ trunk/as2api/html_output.rb 2005-06-01 23:47:07 UTC (rev 83) > @@ -470,16 +470,18 @@ > > end > known_method_names = [] > list_methods(out, type, known_method_names) > > - out.element_dl do > - type.each_ancestor do |type| > - if type.methods? > - out.element_dt do > - out.pcdata("Inherited from ") > - link_type(out, type) > > + if type.has_ancestor? > + out.element_dl do > + type.each_ancestor do |type| > + if type.methods? > + out.element_dt do > + out.pcdata("Inherited from ") > + link_type(out, type) > + end > + out.element_dd do > + list_methods(out, type, known_method_names, > link_for_type(type)) > + end > > end > > - out.element_dd do > - list_methods(out, type, known_method_names, > link_for_type(type)) > - end > > end > end > end > > CVSspam 0.2.11 _______________________________________________ > as2api-dev mailing list as2api-dev@lists.badgers-in-foil.co.uk > http://lists.badgers-in-foil.co.uk/mailman/listinfo/as2api-dev -- Phil Powell Technical Director Yard Partners Ltd Tel: +44 (0)20 7928 5099 http://www.yardpartners.com From dave at badgers-in-foil.co.uk Thu Jun 2 08:56:30 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 2 Jun 2005 08:56:30 +0000 Subject: [as2api-dev] [CVS trunk] Only produce
for inherited methods if there is actually a supertype In-Reply-To: <1f563f3aee5983a4dd2a4ad83bc63559@produxion.net> References: <1f563f3aee5983a4dd2a4ad83bc63559@produxion.net> Message-ID: <20050602085630.GA3676@vhost.badgers-in-foil.co.uk> On Thu, Jun 02, 2005 at 01:11:51AM +0100, Phil Powell wrote: > All recent commits: top work Mr Holroyd! No no -- all credit to Rostislav. Hopefully I'll get another evening to finish looking though the changes sometime soon. dave -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Thu Jun 2 19:35:49 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 02 Jun 2005 19:35:49 +0000 Subject: [as2api-dev] [CVS trunk] Refactor the mammoth document_method() function into smaller pieces. Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+62-5383 -> 84
Refactor the mammoth document_method() function into smaller pieces.
Reveals some code that can be shared with document_field() too.

trunk/as2api
html_output.rb 83 -> 84
--- trunk/as2api/html_output.rb	2005-06-01 23:47:07 UTC (rev 83)
+++ trunk/as2api/html_output.rb	2005-06-02 19:35:48 UTC (rev 84)
@@ -182,6 +182,63 @@
   return nil
 end
 
+def document_parameters(out, arguments, comment_data)
+  out.element_dt("Parameters")
+  out.element_dd do
+    out.element_table("class"=>"arguments", "summary"=>"") do
+      arguments.each do |arg|
+	desc = comment_find_param(comment_data, arg.name)
+	if desc
+	  out.element_tr do
+	    out.element_td do
+	      out.element_code(arg.name)
+	    end
+	    out.element_td do
+	      output_doccomment_blocktag(out, desc)
+	    end
+	  end
+	end
+      end
+    end
+  end
+end
+
+def document_return(out, return_comment)
+  out.element_dt("Return")
+  out.element_dd do
+    output_doccomment_blocktag(out, return_comment)
+  end
+end
+
+def document_exceptions(out, comment_data)
+  out.element_dt("throws")
+  out.element_dd do
+    out.element_table("class"=>"exceptions", "summary"=>"") do
+      comment_each_exception(comment_data) do |exception_comment|
+	out.element_tr do
+	  out.element_td do
+	    link_type_proxy(out, exception_comment.exception_type)
+	  end
+	  out.element_td do
+	    output_doccomment_blocktag(out, exception_comment)
+	  end
+	end
+      end
+    end
+  end
+end
+
+def document_seealso(out, comment_data)
+  out.element_dt("See Also")
+  out.element_dd do
+    comment_each_seealso(comment_data) do |see_comment|
+      out.element_p do
+	output_doccomment_blocktag(out, see_comment)
+      end
+    end
+  end
+end
+
 def document_method(out, type, method, alt_row=false)
   css_class = "method_details"
   css_class << " alt_row" if alt_row
@@ -198,58 +255,17 @@
 	  #       should really filter out those that don't match before this
 	  #       test
 	  if comment_has_params?(comment_data)
-	    out.element_dt("Parameters")
-	    out.element_dd do
-	      out.element_table("class"=>"arguments", "summary"=>"") do
-		method.arguments.each do |arg|
-		  desc = comment_find_param(comment_data, arg.name)
-		  if desc
-		    out.element_tr do
-		      out.element_td do
-			out.element_code(arg.name)
-		      end
-		      out.element_td do
-                        output_doccomment_blocktag(out, desc)
-		      end
-		    end
-		  end
-		end
-	      end
-	    end
+	    document_parameters(out, method.arguments, comment_data)
 	  end
 	  return_comment = comment_find_return(comment_data)
 	  unless return_comment.nil?
-	    out.element_dt("Return")
-	    out.element_dd do
-              output_doccomment_blocktag(out, return_comment)
-	    end
+	    document_return(out, return_comment)
 	  end
 	  if comment_has_exceptions?(comment_data)
-            out.element_dt("throws")
-            out.element_dd do
-	      out.element_table("class"=>"exceptions", "summary"=>"") do
-	        comment_each_exception(comment_data) do |exception_comment|
-		  out.element_tr do
-		    out.element_td do
-		      link_type_proxy(out, exception_comment.exception_type)
-		    end
-		    out.element_td do
-                      output_doccomment_blocktag(out, exception_comment)
-		    end
-		  end
-	        end
-	      end
-	    end
+	    document_exceptions(out, comment_data)
 	  end
 	  if comment_has_seealso?(comment_data)
-	    out.element_dt("See Also")
-	    out.element_dd do
-	      comment_each_seealso(comment_data) do |see_comment|
-	        out.element_p do
-                  output_doccomment_blocktag(out, see_comment)
-		end
-	      end
-	    end
+	    document_seealso(out, comment_data)
 	  end
 	end
       end
@@ -284,14 +300,7 @@
 	output_doccomment_blocktag(out, comment_data[0])
         out.element_dl("class"=>"field_additional_info") do
 	  if comment_has_seealso?(comment_data)
-	    out.element_dt("See Also")
-	    out.element_dd do
-	      comment_each_seealso(comment_data) do |see_comment|
-	        out.element_p do
-                  output_doccomment_blocktag(out, see_comment)
-		end
-	      end
-	    end
+	    document_seealso(out, comment_data)
 	  end
 	end
       end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Thu Jun 2 19:49:22 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 02 Jun 2005 19:49:22 +0000 Subject: [as2api-dev] [CVS trunk] Factor some common iterator code out into new comment_each_block_of_type() Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+14-1084 -> 85
Factor some common iterator code out into new comment_each_block_of_type()

trunk/as2api
html_output.rb 84 -> 85
--- trunk/as2api/html_output.rb	2005-06-02 19:35:48 UTC (rev 84)
+++ trunk/as2api/html_output.rb	2005-06-02 19:49:21 UTC (rev 85)
@@ -135,10 +135,16 @@
   end
 end
 
-def comment_has_blocktype?(comment_data, type)
+def comment_each_block_of_type(comment_data, type)
   comment_data.each_block do |block|
-    return true if block.is_a?(type)
+    yield block if block.is_a?(type)
   end
+end
+
+def comment_has_blocktype?(comment_data, type)
+  comment_each_block_of_type(comment_data, type) do |block|
+    return true
+  end
   return false
 end
 
@@ -161,23 +167,21 @@
 end
 
 def comment_each_seealso(comment_data)
-  comment_data.each_block do |block|
-    yield block if block.is_a?(SeeBlockTag)
+  comment_each_block_of_type(comment_data, SeeBlockTag) do |block|
+    yield block
   end
 end
 
 def comment_find_param(comment_data, param_name)
-  comment_data.each_block do |block|
-    if block.is_a?(ParamBlockTag) && block.param_name == param_name
-      return block;
-    end
+  comment_each_block_of_type(comment_data, ParamBlockTag) do |block|
+    return block if block.param_name == param_name
   end
   return nil
 end
 
 def comment_find_return(comment_data)
-  comment_data.each_block do |block|
-    return block if block.is_a?(ReturnBlockTag)
+  comment_each_block_of_type(comment_data, ReturnBlockTag) do |block|
+    return block
   end
   return nil
 end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Thu Jun 2 19:56:34 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 02 Jun 2005 19:56:34 +0000 Subject: [as2api-dev] [CVS trunk] Add comment_has_return? test, for consistency with other doc components Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+8-485 -> 86
Add comment_has_return? test, for consistency with other doc components

trunk/as2api
html_output.rb 85 -> 86
--- trunk/as2api/html_output.rb	2005-06-02 19:49:21 UTC (rev 85)
+++ trunk/as2api/html_output.rb	2005-06-02 19:56:34 UTC (rev 86)
@@ -160,6 +160,10 @@
   return comment_has_blocktype?(comment_data, SeeBlockTag)
 end
 
+def comment_has_return?(comment_data)
+  return comment_has_blocktype?(comment_data, ReturnBlockTag)
+end
+
 def comment_each_exception(comment_data)
   comment_data.each_block do |block|
     yield block if block.is_a?(ThrowsBlockTag)
@@ -207,9 +211,10 @@
   end
 end
 
-def document_return(out, return_comment)
+def document_return(out, comment_data)
   out.element_dt("Return")
   out.element_dd do
+    return_comment = comment_find_return(comment_data)
     output_doccomment_blocktag(out, return_comment)
   end
 end
@@ -261,9 +266,8 @@
 	  if comment_has_params?(comment_data)
 	    document_parameters(out, method.arguments, comment_data)
 	  end
-	  return_comment = comment_find_return(comment_data)
-	  unless return_comment.nil?
-	    document_return(out, return_comment)
+	  if comment_has_return?(comment_data)
+	    document_return(out, comment_data)
 	  end
 	  if comment_has_exceptions?(comment_data)
 	    document_exceptions(out, comment_data)
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Thu Jun 2 20:11:13 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 02 Jun 2005 20:11:13 +0000 Subject: [as2api-dev] [CVS trunk] Stop
s being generated for fields/methods when there's no content to go in Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+37-1886 -> 87
Stop <dl>s being generated for fields/methods when there's no content to go in
(A minor reworking of Rostislav's change)

trunk/as2api
html_output.rb 86 -> 87
--- trunk/as2api/html_output.rb	2005-06-02 19:56:34 UTC (rev 86)
+++ trunk/as2api/html_output.rb	2005-06-02 20:11:12 UTC (rev 87)
@@ -164,6 +164,21 @@
   return comment_has_blocktype?(comment_data, ReturnBlockTag)
 end
 
+# Does the method comment include any info in addition to any basic description
+# block?
+def comment_has_method_additional_info?(comment_data)
+  return comment_has_params?(comment_data) ||
+         comment_has_return?(comment_data) ||
+         comment_has_exceptions?(comment_data) ||
+         comment_has_seealso?(comment_data)
+end
+
+# Does the field comment include any info in addition to any basic description
+# block?
+def comment_has_field_additional_info?(comment_data)
+  return comment_has_seealso?(comment_data)
+end
+
 def comment_each_exception(comment_data)
   comment_data.each_block do |block|
     yield block if block.is_a?(ThrowsBlockTag)
@@ -259,22 +274,24 @@
       out.element_blockquote do
         comment_data = method.comment
         output_doccomment_blocktag(out, comment_data[0])
-        out.element_dl("class"=>"method_additional_info") do
-	  # TODO: assumes that params named in docs match formal arguments
-	  #       should really filter out those that don't match before this
-	  #       test
-	  if comment_has_params?(comment_data)
-	    document_parameters(out, method.arguments, comment_data)
+	if comment_has_method_additional_info?(comment_data)
+	  out.element_dl("class"=>"method_additional_info") do
+	    # TODO: assumes that params named in docs match formal arguments
+	    #       should really filter out those that don't match before this
+	    #       test
+	    if comment_has_params?(comment_data)
+	      document_parameters(out, method.arguments, comment_data)
+	    end
+	    if comment_has_return?(comment_data)
+	      document_return(out, comment_data)
+	    end
+	    if comment_has_exceptions?(comment_data)
+	      document_exceptions(out, comment_data)
+	    end
+	    if comment_has_seealso?(comment_data)
+	      document_seealso(out, comment_data)
+	    end
 	  end
-	  if comment_has_return?(comment_data)
-	    document_return(out, comment_data)
-	  end
-	  if comment_has_exceptions?(comment_data)
-	    document_exceptions(out, comment_data)
-	  end
-	  if comment_has_seealso?(comment_data)
-	    document_seealso(out, comment_data)
-	  end
 	end
       end
     end
@@ -306,9 +323,11 @@
       out.element_blockquote do
 	comment_data = field.comment
 	output_doccomment_blocktag(out, comment_data[0])
-        out.element_dl("class"=>"field_additional_info") do
-	  if comment_has_seealso?(comment_data)
-	    document_seealso(out, comment_data)
+	if comment_has_field_additional_info?(comment_data)
+	  out.element_dl("class"=>"field_additional_info") do
+	    if comment_has_seealso?(comment_data)
+	      document_seealso(out, comment_data)
+	    end
 	  end
 	end
       end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Thu Jun 2 20:17:07 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 02 Jun 2005 20:17:07 +0000 Subject: [as2api-dev] [CVS trunk] 'throws' -> 'Throws', so that this
matches all the others Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+1-187 -> 88
'throws' -> 'Throws', so that this <dt> matches all the others

trunk/as2api
html_output.rb 87 -> 88
--- trunk/as2api/html_output.rb	2005-06-02 20:11:12 UTC (rev 87)
+++ trunk/as2api/html_output.rb	2005-06-02 20:17:05 UTC (rev 88)
@@ -235,7 +235,7 @@
 end
 
 def document_exceptions(out, comment_data)
-  out.element_dt("throws")
+  out.element_dt("Throws")
   out.element_dd do
     out.element_table("class"=>"exceptions", "summary"=>"") do
       comment_each_exception(comment_data) do |exception_comment|
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Thu Jun 2 20:22:40 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 02 Jun 2005 20:22:40 +0000 Subject: [as2api-dev] [CVS trunk] Exclude an empty
from field list, just as we're now doing for method list Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+11-988 -> 89
Exclude an empty <dl> from field list, just as we're now doing for method list

trunk/as2api
html_output.rb 88 -> 89
--- trunk/as2api/html_output.rb	2005-06-02 20:17:05 UTC (rev 88)
+++ trunk/as2api/html_output.rb	2005-06-02 20:22:39 UTC (rev 89)
@@ -446,16 +446,18 @@
   out.element_div("class"=>"field_index") do
     out.element_h2("Field Index")
     list_fields(out, type)
-    out.element_dl do
-      type.each_ancestor do |type|
-	if type.fields?
-	  out.element_dt do
-	    out.pcdata("Inherited from ")
-	    link_type(out, type)
+    if type.has_ancestor?
+      out.element_dl do
+	type.each_ancestor do |type|
+	  if type.fields?
+	    out.element_dt do
+	      out.pcdata("Inherited from ")
+	      link_type(out, type)
+	    end
+	    out.element_dd do
+	      list_fields(out, type, link_for_type(type))
+	    end
 	  end
-	  out.element_dd do
-	    list_fields(out, type, link_for_type(type))
-	  end
 	end
       end
     end
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Thu Jun 2 21:27:41 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 02 Jun 2005 21:27:41 +0000 Subject: [as2api-dev] [CVS trunk] Factor out common navigation-skipping code. Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+18-989 -> 90
Factor out common navigation-skipping code.

trunk/as2api
html_output.rb 89 -> 90
--- trunk/as2api/html_output.rb	2005-06-02 20:22:39 UTC (rev 89)
+++ trunk/as2api/html_output.rb	2005-06-02 21:27:39 UTC (rev 90)
@@ -559,6 +559,14 @@
   end
 end
 
+# accessability; make a link to skip over the (navigation) elements produced
+# by the given block
+def skip_nav(out)
+  out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
+  yield
+  out.element_a("", {"name"=>"skip_nav"})
+end
+
 def document_type(type)
   encoding = if type.source_utf8
     "utf-8"
@@ -566,9 +574,9 @@
     "iso-8859-1"
   end
   html_body(type.unqualified_name, type.qualified_name, encoding) do |out|
-    out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})  # accessability
-    class_navigation(out)
-    out.element_a("", {"name"=>"skip_nav"})
+    skip_nav(out) do
+      class_navigation(out)
+    end
     if type.instance_of?(ASClass)
       out.element_h1("Class "+type.qualified_name)
     elsif type.instance_of?(ASInterface)
@@ -661,9 +669,9 @@
 
 def package_index(package)
   html_body("package-summary", "Package #{package_display_name_for(package)} API Documentation") do |out|
-    out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})  # accessability
-    package_navigation(out)
-    out.element_a("", {"name"=>"skip_nav"})
+    skip_nav(out) do
+      package_navigation(out)
+    end
     out.element_h1("Package "+package_display_name_for(package))
     interfaces = package.interfaces
     unless interfaces.empty?
@@ -756,9 +764,9 @@
 
 def overview(type_agregator)
   html_body("overview-summary", "API Overview") do |out|
-    out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})  # accessability
-    overview_navigation(out)
-    out.element_a("", {"name"=>"skip_nav"})
+    skip_nav(out) do
+      overview_navigation(out)
+    end
     out.element_h1("API Overview")
     out.element_table("class"=>"summary_list", "summary"=>"") do
       out.element_tr do
@@ -994,3 +1002,4 @@
 end
 
 # vim:softtabstop=2:shiftwidth=2
+
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Thu Jun 2 22:48:51 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 02 Jun 2005 22:48:51 +0000 Subject: [as2api-dev] [CVS trunk] Fix XHTML issues; inline content appearing where block elements were required Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+12-490 -> 91
Fix XHTML issues; inline content appearing where block elements were required

trunk/as2api
html_output.rb 90 -> 91
--- trunk/as2api/html_output.rb	2005-06-02 21:27:39 UTC (rev 90)
+++ trunk/as2api/html_output.rb	2005-06-02 22:48:51 UTC (rev 91)
@@ -230,7 +230,9 @@
   out.element_dt("Return")
   out.element_dd do
     return_comment = comment_find_return(comment_data)
-    output_doccomment_blocktag(out, return_comment)
+    out.element_p do
+      output_doccomment_blocktag(out, return_comment)
+    end
   end
 end
 
@@ -273,7 +275,9 @@
     if method.comment
       out.element_blockquote do
         comment_data = method.comment
-        output_doccomment_blocktag(out, comment_data[0])
+	out.element_p do
+          output_doccomment_blocktag(out, comment_data[0])
+	end
 	if comment_has_method_additional_info?(comment_data)
 	  out.element_dl("class"=>"method_additional_info") do
 	    # TODO: assumes that params named in docs match formal arguments
@@ -562,9 +566,13 @@
 # accessability; make a link to skip over the (navigation) elements produced
 # by the given block
 def skip_nav(out)
-  out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
+  out.element_div do
+    out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
+  end
   yield
-  out.element_a("", {"name"=>"skip_nav"})
+  out.element_div do
+    out.element_a("", {"name"=>"skip_nav"})
+  end
 end
 
 def document_type(type)
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Fri Jun 3 07:32:45 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Fri, 03 Jun 2005 07:32:45 +0000 Subject: [as2api-dev] [CVS trunk] Allow DOCTYPEs to be specified, and put resonable values in place. Message-ID:
Commit in trunk/as2api on MAIN
html_output.rb+27-991 -> 92
xhtmlwriter.rb+491 -> 92
+31-9
2 modified files
Allow DOCTYPEs to be specified, and put resonable values in place.

Per Rostislav's suggestion, but with doctypes specified with an explicit
argument, rather than implicitly (based on the name of the file to be
generated).

trunk/as2api
html_output.rb 91 -> 92
--- trunk/as2api/html_output.rb	2005-06-02 22:48:51 UTC (rev 91)
+++ trunk/as2api/html_output.rb	2005-06-03 07:32:43 UTC (rev 92)
@@ -376,11 +376,29 @@
   end
 end
 
-def html_file(name, title, encoding=nil)
+def html_file(name, title, doctype=:strict, encoding=nil)
   write_file("#{name}.html") do |io|
     out = XHTMLWriter.new(XMLWriter.new(io))
     encoding = "iso-8859-1" if encoding.nil?
     out.pi("xml version=\"1.0\" encoding=\"#{encoding}\"")
+    case doctype
+    # FIXME: push this code down into XHTMLWriter, and have it switch the
+    # allowed elements depending on the value passed at construction
+    when :strict
+      out.doctype("html", "PUBLIC",
+                  "-//W3C//DTD XHTML 1.0 Strict//EN",
+		  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")
+    when :transitional
+      out.doctype("html", "PUBLIC",
+                  "-//W3C//DTD XHTML 1.0 Transitionalt//EN",
+		  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd")
+    when :frameset
+      out.doctype("html", "PUBLIC",
+                  "-//W3C//DTD XHTML 1.0 Frameset//EN",
+		  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd")
+    else
+      raise "unhandled doctype #{doctype.inspect}"
+    end
     out.element_html do
       out.element_head do
         out.element_title(title)
@@ -394,8 +412,8 @@
   end
 end
 
-def html_body(name, title, encoding=nil)
-  html_file(name, title, encoding) do |out|
+def html_body(name, title, doctype=:strict, encoding=nil)
+  html_file(name, title, doctype, encoding) do |out|
     out.element_body do
       yield out
       footer(out)
@@ -581,7 +599,7 @@
   else
     "iso-8859-1"
   end
-  html_body(type.unqualified_name, type.qualified_name, encoding) do |out|
+  html_body(type.unqualified_name, type.qualified_name, :strict, encoding) do |out|
     skip_nav(out) do
       class_navigation(out)
     end
@@ -726,7 +744,7 @@
 end
 
 def package_frame(package)
-  html_file("package-frame", "Package #{package_display_name_for(package)} API Naviation") do |out|
+  html_file("package-frame", "Package #{package_display_name_for(package)} API Naviation", :transitional) do |out|
     out.element_body do
       out.element_p do
 	out.element_a(package_display_name_for(package), {"href"=>"package-summary.html", "target"=>"type_frame"})
@@ -799,7 +817,7 @@
 end
 
 def overview_frame(type_agregator)
-  html_file("overview-frame", "API Overview") do |out|
+  html_file("overview-frame", "API Overview", :transitional) do |out|
     out.element_body do
       out.element_h3("Packages")
       out.element_ul("class"=>"navigation_list") do
@@ -835,7 +853,7 @@
 end
 
 def all_types_frame(type_agregator)
-  html_file("all-types-frame", "as2api") do |out|
+  html_file("all-types-frame", "as2api", :transitional) do |out|
     out.element_body do
       out.element_h3("All Types")
       out.element_ul("class"=>"navigation_list") do
@@ -861,7 +879,7 @@
 end
 
 def frameset
-  html_file("frameset", "as2api") do |out|
+  html_file("frameset", "as2api", :frameset) do |out|
     out.element_frameset("cols"=>"20%,80%") do
       out.element_frameset("rows"=>"30%,70%") do
 	out.element_frame("src"=>"overview-frame.html",
@@ -971,7 +989,7 @@
   index.sort!
 
   in_subdir("index-files") do
-    html_file("index", "Alphabetical Index") do |out|
+    html_body("index", "Alphabetical Index") do |out|
       index_navigation(out)
       index.each do |element|
 	out.element_p do

trunk/as2api
xhtmlwriter.rb 91 -> 92
--- trunk/as2api/xhtmlwriter.rb	2005-06-02 22:48:51 UTC (rev 91)
+++ trunk/as2api/xhtmlwriter.rb	2005-06-03 07:32:43 UTC (rev 92)
@@ -127,6 +127,10 @@
     @io.comment(text)
   end
 
+  def doctype(name, syspub, public_id, system_id)
+    @io.doctype(name, syspub, public_id, system_id)
+  end
+
   def xml; @io end
 end
 
CVSspam 0.2.11
From dave at badgers-in-foil.co.uk Fri Jun 3 14:17:22 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Fri, 3 Jun 2005 14:17:22 +0000 Subject: [as2api-dev] About as2api and EnFlash In-Reply-To: <435de14305060107311f2365fe@mail.gmail.com> References: <435de143050530135233324701@mail.gmail.com> <20050531124709.GA29584@vhost.badgers-in-foil.co.uk> <435de14305060107311f2365fe@mail.gmail.com> Message-ID: <20050603141722.GB26347@vhost.badgers-in-foil.co.uk> On Wed, Jun 01, 2005 at 05:31:28PM +0300, Rostislav Hristov wrote: > - The biggest bugfix was the HEAD tag closing, just moving an "yield > out" statement a line downwards Yep. Duh ;) > - Mozilla browsers seem to have strange hover effect with name="method" /> anchors, so I made them Could you be more specific about the problem? (I see you also changed 'name' to 'id'.) Could it be a :link pseudo-class issue, or did you try that too? > - I have remove the TARGET attribute from each cross frame link and > replaced it with a simple BASE tag in the HEAD that appears only once > per page Might do this if I get around to it. The possibility of needing to target multiple frames held me back (but even then, I guess would still make for a smaller page. Hmmm...) > - Proper DOCTYPE for frameset and plain pages. I wanted to use XHTML > 1.1, but it disables the usage of BASE tag mentioned above. XHTML 1.0 > Transitional looks fair enough Implemented this in a slightly different way -- the caller explicitly states the doctype required, rather than the callee working it out based on the filename. - The frameset page gets the XHTML Frameset doctype - Pages for navigation frames get XHTML Transitional, so they can use target="..." - The main pages get XHTML Strict > - Some CSS classes has been removed since some elements can be styled > directly by tag name I am going to keep most of the classes, even though not all of them are used yet, because, - Maybe someone else will want to hang some CSS from these hooks - If people write docs that include inline HTML, the default stylesheet shouldn't clobber their tags unexpectedly. Maybe they like the default presentation of
    /
  • ? ;) > - I have removed the second column of the Summary tables, once > descriptions are implemented it should be restored Yep, looks better! > - The Summary tables are the only of its kind left. The latest markup > trend says that tables should be used only for tabular data and that's > why I replaced all other tables with UL/LI lists or something more > adequate The tables that were being used in the navigation frames were very wrong, and I've killed 'em. I was being lazy, and lifted the layout directly from some JavaDoc I had to hand. I would argue that it *is* actually reasonable to want the list of method parameters and exceptions tabulated though. I was even thinking of going so far as to add 's to label the data (in a row suppressed by the default CSS for screen/print media), for accessibility reasons. [With judicious use of display:normal, it may be possible to make these tables look the same as the style you've developed] > - Added HR tags between Field and Method items, I wanted to skip the > last HR tag and it worked for Fields Well, we actually used to have
    s in there, but I took them out :) [See the examples currently linked from the project page.] My reasoning was that by dropping these lines, I *slightly* reduce the visual clutter on the page. Without the lines of course, it's difficult to differentiate one field/method from the next, so I added a rule like this: .alt_row { background-color: #eeeeee; } It's also worth noting that lines between entries can be added back by adding a border with CSS. > - There are some extra SPAN tags in the navigation bar that makes > links looks rounded. This is related to the style of my website and > can be skipped Nice -- maybe this could be implemented with [-moz-]border-radius, for those browsers that understand how? > - Some empty DL tags had been generated in some cases and I tried to remove them Hopefully I've eliminated most of these now. > - I have changed frameset.html to index.html since it simplifies > deploying on a webserver I think that by *not* naming the file index.html, I was doing something clever following in the footsteps of JavaDoc. I can no longer remember what that was though. Errrm, I should probably make the same change, when I have a moment. > Configurable parameters will be the next good thing about as2api. This > is the year of the command line tools for Flash, so you may not invest > much time in GUIs. The need to support additional configurables in the GUI(s) too has actually already stopped me adding new stuff a couple of times. Maybe I should just forget about the GUI until the app matures? On the other hand, the majority of the as2api downloads are of the all-in-one windows .exe :-S dave -- http://david.holroyd.me.uk/ From alex at gengon.de Fri Jun 3 14:18:55 2005 From: alex at gengon.de (=?ISO-8859-1?Q?Alexander_K=E4mmerer?=) Date: Fri, 03 Jun 2005 16:18:55 +0200 Subject: [as2api-dev] svn or cvs checkout need some data and /or links ??? In-Reply-To: <20050603123901.29351.9724.Mailman@vhost.badgers-in-foil.co.uk> References: <20050603123901.29351.9724.Mailman@vhost.badgers-in-foil.co.uk> Message-ID: <42A066CF.7060604@gengon.de> hey guys, a very nice project, i would like to get the latest sources but svn won´t work so i need some help what should i do ??? thx alex From dave at badgers-in-foil.co.uk Fri Jun 3 14:35:02 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Fri, 3 Jun 2005 14:35:02 +0000 Subject: [as2api-dev] svn or cvs checkout need some data and /or links ??? In-Reply-To: <42A066CF.7060604@gengon.de> References: <20050603123901.29351.9724.Mailman@vhost.badgers-in-foil.co.uk> <42A066CF.7060604@gengon.de> Message-ID: <20050603143502.GC26347@vhost.badgers-in-foil.co.uk> On Fri, Jun 03, 2005 at 04:18:55PM +0200, Alexander K?mmerer wrote: > a very nice project, i would like to > get the latest sources but svn won?t work > so i need some help what should i do ??? I've not got anonymous SVN access working yet, sorry. It's a bit labourious, but in the meantime, you could always d/l the code from ViewCVS, svn.badgers-in-foil.co.uk/viewcvs.cgi/as2api/trunk/as2api/ ? dave -- http://david.holroyd.me.uk/ From Rostislav Hristov Sat Jun 4 21:59:35 2005 From: Rostislav Hristov (Rostislav Hristov) Date: Sun, 5 Jun 2005 00:59:35 +0300 Subject: [as2api-dev] About as2api and EnFlash In-Reply-To: <20050603141722.GB26347@vhost.badgers-in-foil.co.uk> References: <435de143050530135233324701@mail.gmail.com> <20050531124709.GA29584@vhost.badgers-in-foil.co.uk> <435de14305060107311f2365fe@mail.gmail.com> <20050603141722.GB26347@vhost.badgers-in-foil.co.uk> Message-ID: <435de1430506041459417632e7@mail.gmail.com> Hi David, this mail is going to become a complete mess, hope you'll be able to see my comments :) > > - Mozilla browsers seem to have strange hover effect with > name=3D"method" /> anchors, so I made them >=20 > Could you be more specific about the problem? (I see you also changed > 'name' to 'id'.) Could it be a :link pseudo-class issue, or did you try > that too? >=20 When I've added a global 'a:hover' style the text after the anchor inherited that effect which is not normal. I've used 'id' instead of 'name' because I was trying to achieve XHTML 1.1, you can leave it as 'name' for compatibility with older browsers. > > - I have remove the TARGET attribute from each cross frame link and > > replaced it with a simple BASE tag in the HEAD that appears only once > > per page >=20 > Might do this if I get around to it. The possibility of needing to > target multiple frames held me back (but even then, I guess would > still make for a smaller page. Hmmm...) >=20 If the 'target' attribute of the links overrides the base tag then this is = good. > > - Proper DOCTYPE for frameset and plain pages. I wanted to use XHTML > > 1.1, but it disables the usage of BASE tag mentioned above. XHTML 1.0 > > Transitional looks fair enough >=20 > Implemented this in a slightly different way -- the caller explicitly > states the doctype required, rather than the callee working it out based > on the filename. > I don't have any doubts that this is a better solution ;) =20 > - The frameset page gets the XHTML Frameset doctype > - Pages for navigation frames get XHTML Transitional, so they can use > target=3D"..." > - The main pages get XHTML Strict >=20 > > - Some CSS classes has been removed since some elements can be styled > > directly by tag name >=20 > I am going to keep most of the classes, even though not all of them are > used yet, because, >=20 > - Maybe someone else will want to hang some CSS from these hooks > - If people write docs that include inline HTML, the default stylesheet > shouldn't clobber their tags unexpectedly. Maybe they like the > default presentation of
      /
    • ? ;) >=20 I agree with your point. I feel better with a global style, but the customization is more important. A good option will be an AS code highlighter with predefined CSS for inline JavaDoc examples. >=20 > > - I have removed the second column of the Summary tables, once > > descriptions are implemented it should be restored >=20 > Yep, looks better! >=20 Yes, it's because it looks bad when it's empty. >=20 > > - The Summary tables are the only of its kind left. The latest markup > > trend says that tables should be used only for tabular data and that's > > why I replaced all other tables with UL/LI lists or something more > > adequate >=20 > The tables that were being used in the navigation frames were very > wrong, and I've killed 'em. I was being lazy, and lifted the layout > directly from some JavaDoc I had to hand. >=20 Tables are not that bad, but such improvement is better. > I would argue that it *is* actually reasonable to want the list of method > parameters and exceptions tabulated though. I was even thinking of > going so far as to add 's to label the data (in a row suppressed by > the default CSS for screen/print media), for accessibility reasons. >=20 > [With judicious use of display:normal, it may be possible to make > these tables look the same as the style you've developed] >=20 I got your idea about tabulation, actually I don't know which is better... it's a matter of readability. Table with borders are may be better in this case... it's up to you man. > > - Added HR tags between Field and Method items, I wanted to skip the > > last HR tag and it worked for Fields >=20 > Well, we actually used to have
      s in there, but I took them out :) > [See the examples currently linked from the project page.] >=20 > My reasoning was that by dropping these lines, I *slightly* reduce the > visual clutter on the page. Without the lines of course, it's difficult > to differentiate one field/method from the next, so I added a rule like > this: >=20 > .alt_row { > background-color: #eeeeee; > } >=20 > It's also worth noting that lines between entries can be added back by > adding a border with CSS. >=20 I started with these border-bottom and the hr's were one of my last changes. The idea was to skip the last line, which makes no sense with the Constructor section for example. It's a design issue and it's not very important. >=20 > > - There are some extra SPAN tags in the navigation bar that makes > > links looks rounded. This is related to the style of my website and > > can be skipped >=20 > Nice -- maybe this could be implemented with [-moz-]border-radius, for > those browsers that understand how? >=20 >=20 I have created this technique for my site. It works in most of the browsers and the CSS validates, but it's not that needed. > > - Some empty DL tags had been generated in some cases and I tried to re= move them >=20 > Hopefully I've eliminated most of these now. >=20 I don't have throws and see also comments in my code, so I may not have fixed all of these. >=20 > > - I have changed frameset.html to index.html since it simplifies > > deploying on a webserver >=20 > I think that by *not* naming the file index.html, I was doing something > clever following in the footsteps of JavaDoc. I can no longer remember > what that was though. Errrm, I should probably make the same change, > when I have a moment. >=20 I think the frameset version should be the default one, event when No frames link is added. That's why I made it index.html. >=20 > > Configurable parameters will be the next good thing about as2api. This > > is the year of the command line tools for Flash, so you may not invest > > much time in GUIs. >=20 > The need to support additional configurables in the GUI(s) too has > actually already stopped me adding new stuff a couple of times. >=20 > Maybe I should just forget about the GUI until the app matures? On the > other hand, the majority of the as2api downloads are of the all-in-one > windows .exe :-S >=20 I have also started with all-in-one version, but this project targets developers and may be a stable command line tool with good features is a better option. Downloading and using Ruby can be done is less that an hour. An XML file with configurable parameters that will be supplied to documenter.rb is a good option. Something similar to build.xml in Ant. >=20 > dave >=20 > -- > http://david.holroyd.me.uk/ >=20 > _______________________________________________ > as2api-dev mailing list > as2api-dev@lists.badgers-in-foil.co.uk > http://lists.badgers-in-foil.co.uk/mailman/listinfo/as2api-dev > From dave at badgers-in-foil.co.uk Sat Jun 4 22:58:20 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sat, 04 Jun 2005 22:58:20 +0000 Subject: [as2api-dev] [CVS trunk] Doh; correct attribute name Message-ID:
      Commit in trunk/as2api on MAIN
      api_model.rb+1-192 -> 93
      Doh; correct attribute name
      

      trunk/as2api
      api_model.rb 92 -> 93
      --- trunk/as2api/api_model.rb	2005-06-03 07:32:43 UTC (rev 92)
      +++ trunk/as2api/api_model.rb	2005-06-04 22:58:14 UTC (rev 93)
      @@ -69,7 +69,7 @@
      
         end
       
         def has_ancestor?
      
      -    !@parent.nil? && @parent.resolved?
      
      +    !@extends.nil? && @extends.resolved?
      
         end
       
         # The whole type name, including package-prefix
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 5 00:18:18 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 05 Jun 2005 00:18:18 +0000 Subject: [as2api-dev] [CVS trunk] 'Specified By' tells us that a method implements the contract of some interface. Message-ID:
      Commit in trunk/as2api on MAIN
      api_loader.rb+3-393 -> 94
      api_model.rb+37-893 -> 94
      html_output.rb+48-593 -> 94
      +88-16
      3 modified files
      'Specified By' tells us that a method implements the contract of some interface.
      
      This commit also links type-members to their containing type, so that this
      kind of feature becomes easier to implement
      

      trunk/as2api
      api_loader.rb 93 -> 94
      --- trunk/as2api/api_loader.rb	2005-06-04 22:58:14 UTC (rev 93)
      +++ trunk/as2api/api_loader.rb	2005-06-05 00:18:17 UTC (rev 94)
      @@ -148,7 +148,7 @@
      
         end
       
         def start_member_field(name, type)
      
      -    field = ASExplicitField.new(@last_modifier, name.body)
      
      +    field = ASExplicitField.new(@defined_type, @last_modifier, name.body)
      
           unless type.nil?
             field.field_type = @type_resolver.resolve(type)
           end
      
      @@ -178,7 +178,7 @@
      
         private
       
         def create_method(name, sig)
      
      -    method = ASMethod.new(@last_modifier, name.body)
      
      +    method = ASMethod.new(@defined_type, @last_modifier, name.body)
      
           if sig.return_type
             method.return_type = @type_resolver.resolve(sig.return_type)
           end
      
      @@ -208,7 +208,7 @@
      
         def implicit_property_function(name, sig)
           field = @defined_type.get_field_called(name.body)
           if field.nil?
      
      -      field = ASImplicitField.new(name.body)
      
      +      field = ASImplicitField.new(@defined_type, name.body)
      
             @defined_type.add_field(field)
           end
           func = create_method(name, sig)
      

      trunk/as2api
      api_model.rb 93 -> 94
      --- trunk/as2api/api_model.rb	2005-06-04 22:58:14 UTC (rev 93)
      +++ trunk/as2api/api_model.rb	2005-06-05 00:18:17 UTC (rev 94)
      @@ -52,6 +52,13 @@
      
           !@constructor.nil?
         end
       
      
      +  def get_method_called(name)
      +    each_method do |method|
      +      return method if method.name == name
      +    end
      +    nil
      +  end
      +
      
         # The type's name, excluding its package-prefix
         def unqualified_name
           @name
      
      @@ -156,6 +163,18 @@
      
           end
         end
       
      
      +  # like #each_interface, but then also reports each_interface of each_ancestor
      +  def each_implemented_interface
      +    each_interface do |interface|
      +      yield interface.resolved_type if interface.resolved?
      +    end
      +    each_ancestor do |supertype|
      +      supertype.each_interface do |interface|
      +	yield interface.resolved_type if interface.resolved?
      +      end
      +    end
      +  end
      +
      
         def add_field(field)
           @fields << field
         end
      
      @@ -200,13 +219,14 @@
      
       
       # A member in some type
       class ASMember
      
      -  def initialize(access, name)
      
      +  def initialize(containing_type, access, name)
      +    @containing_type = containing_type
      
           @access = access
           @name = name
           @comment = nil
         end
       
      
      -  attr_accessor :access, :name, :comment
      
      +  attr_accessor :containing_type, :access, :name, :comment
      
       
         # compares two members based on their names
         def <=>(other)
      
      @@ -218,8 +238,8 @@
      
       
       # A method member, which may appear in an ASClass or ASInterface
       class ASMethod < ASMember
      
      -  def initialize(access, name)
      -    super(access, name)
      
      +  def initialize(containing_type, access, name)
      +    super(containing_type, access, name)
      
           @return_type = nil
           @args = []
         end
      
      @@ -237,6 +257,15 @@
      
         def argument(index)
           @args[index]
         end
      
      +
      +  def specified_by
      +    raise "not applicable to interface methods" unless containing_type.is_a?(ASClass)
      +    containing_type.each_implemented_interface do |interface|
      +      spec_method = interface.get_method_called(name)
      +      return spec_method unless spec_method.nil?
      +    end
      +    nil
      +  end
      
       end
       
       # A field member, which may appear in an ASClass, but not an ASInterface
      
      @@ -244,8 +273,8 @@
      
       end
       
       class ASExplicitField < ASField
      
      -  def initialize(access, name)
      -    super(access, name)
      
      +  def initialize(containing_tyye, access, name)
      +    super(containing_tyye, access, name)
      
           @field_type = nil
         end
       
      
      @@ -260,8 +289,8 @@
      
       
       # A field implied by the presence of "get" or "set" methods with this name
       class ASImplicitField < ASField
      
      -  def initialize(name)
      -    super(nil, name)
      
      +  def initialize(containing_tyye, name)
      +    super(containing_tyye, nil, name)
      
           @getter_method = nil
           @setter_method = nil
         end
      

      trunk/as2api
      html_output.rb 93 -> 94
      --- trunk/as2api/html_output.rb	2005-06-04 22:58:14 UTC (rev 93)
      +++ trunk/as2api/html_output.rb	2005-06-05 00:18:17 UTC (rev 94)
      @@ -265,6 +265,31 @@
      
         end
       end
       
      
      +def link_method(out, method)
      +  out.element_a("href"=>link_for_method(method)) do
      +    out.pcdata(method.name)
      +    out.pcdata("()")
      +  end
      +end
      +
      +def document_specified_by(out, method)
      +  out.element_dt("Specified By")
      +  out.element_dd do
      +    link_method(out, method)
      +    out.pcdata(" in ")
      +    link_type(out, method.containing_type, true)
      +  end
      +end
      +
      +def method_additional_info?(method, comment_data)
      +  if method.containing_type.is_a?(ASClass)
      +    spec_method = method.specified_by
      +  else
      +    spec_method = nil
      +  end
      +  return comment_has_method_additional_info?(comment_data) || !spec_method.nil?
      +end
      +
      
       def document_method(out, type, method, alt_row=false)
         css_class = "method_details"
         css_class << " alt_row" if alt_row
      
      @@ -278,7 +303,7 @@
      
       	out.element_p do
                 output_doccomment_blocktag(out, comment_data[0])
       	end
      
      -	if comment_has_method_additional_info?(comment_data)
      
      +	if method_additional_info?(method, comment_data)
      
       	  out.element_dl("class"=>"method_additional_info") do
       	    # TODO: assumes that params named in docs match formal arguments
       	    #       should really filter out those that don't match before this
      
      @@ -292,12 +317,29 @@
      
       	    if comment_has_exceptions?(comment_data)
       	      document_exceptions(out, comment_data)
       	    end
      
      +	    if type.is_a?(ASClass)
      +	      spec_method = method.specified_by
      +	      unless spec_method.nil?
      +		document_specified_by(out, spec_method)
      +	      end
      +	    end
      
       	    if comment_has_seealso?(comment_data)
       	      document_seealso(out, comment_data)
       	    end
       	  end
       	end
             end
      
      +    else
      +      if type.is_a?(ASClass)
      +	spec_method = method.specified_by
      +	unless spec_method.nil?
      +	  out.element_blockquote do
      +	    out.element_dl("class"=>"method_additional_info") do
      +	      document_specified_by(out, spec_method)
      +	    end
      +	  end
      +	end
      +      end
      
           end
         end
       end
      
      @@ -934,12 +976,13 @@
      
         end
       end
       
      
      +def link_for_method(method)
      +  return "#{link_for_type(method.containing_type)}#method_#{method.name}"
      +end
      +
      
       class MethodIndexTerm < MemberIndexTerm
         def link(out)
      
      -    href_prefix = link_for_type(@astype)
      -    out.element_a("href"=>"#{href_prefix}#method_#{@asmember.name}") do
      -      out.pcdata(@asmember.name + "()")
      -    end
      
      +    link_method(out, @asmember)
      
           out.pcdata(" method in ")
           link_type(out, @astype, true)
         end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 6 21:02:53 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 06 Jun 2005 21:02:53 +0000 Subject: [as2api-dev] [CVS trunk] Simplify a few places where the type was passed along with the type-member Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+7-794 -> 95
      Simplify a few places where the type was passed along with the type-member
      

      trunk/as2api
      html_output.rb 94 -> 95
      --- trunk/as2api/html_output.rb	2005-06-05 00:18:17 UTC (rev 94)
      +++ trunk/as2api/html_output.rb	2005-06-06 21:02:52 UTC (rev 95)
      @@ -290,7 +290,7 @@
      
         return comment_has_method_additional_info?(comment_data) || !spec_method.nil?
       end
       
      
      -def document_method(out, type, method, alt_row=false)
      
      +def document_method(out, method, alt_row=false)
      
         css_class = "method_details"
         css_class << " alt_row" if alt_row
         out.element_div("class"=>css_class) do
      
      @@ -317,7 +317,7 @@
      
       	    if comment_has_exceptions?(comment_data)
       	      document_exceptions(out, comment_data)
       	    end
      
      -	    if type.is_a?(ASClass)
      
      +	    if method.containing_type.is_a?(ASClass)
      
       	      spec_method = method.specified_by
       	      unless spec_method.nil?
       		document_specified_by(out, spec_method)
      
      @@ -330,7 +330,7 @@
      
       	end
             end
           else
      
      -      if type.is_a?(ASClass)
      
      +      if method.containing_type.is_a?(ASClass)
      
       	spec_method = method.specified_by
       	unless spec_method.nil?
       	  out.element_blockquote do
      
      @@ -360,7 +360,7 @@
      
         end
       end
       
      
      -def document_field(out, type, field)
      
      +def document_field(out, field)
      
         out.element_a("name"=>"field_#{field.name}")
         out.element_h3(field.name)
         out.element_div("class"=>"field_details") do
      
      @@ -551,7 +551,7 @@
      
         out.element_div("class"=>"field_detail_list") do
           out.element_h2("Field Detail")
           type.each_field do |field|
      
      -      document_field(out, type, field) if document_member?(field)
      
      +      document_field(out, field) if document_member?(field)
      
           end
         end
       end
      
      @@ -610,7 +610,7 @@
      
           count = 0
           type.each_method do |method|
             next unless document_member?(method)
      
      -      document_method(out, type, method, count%2==0)
      
      +      document_method(out, method, count%2==0)
      
             count += 1
           end
         end
      
      @@ -619,7 +619,7 @@
      
       def constructor_detail(out, type)
         out.element_div("class"=>"constructor_detail_list") do
           out.element_h2("Constructor Detail")
      
      -    document_method(out, type, type.constructor)
      
      +    document_method(out, type.constructor)
      
         end
       end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 16:59:34 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 16:59:34 +0000 Subject: [as2api-dev] [CVS trunk] Orient html_output.rb implemetation more towards objects. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+108-4295 -> 96
      Orient html_output.rb implemetation more towards objects.
      
      Each kind of HTML page we output gets a class of its very own, and each of
      these classes has a generate() method.
      
      This will eventually allow for all sorts of nice refactorings, but first,
      subsequent commits must:
      
       - Fix indentation of functions that have been promoted to methods
       - Gather together the top-level functions that should now be methods of
         the relevant *Page classes
      

      trunk/as2api
      html_output.rb 95 -> 96
      --- trunk/as2api/html_output.rb	2005-06-06 21:02:52 UTC (rev 95)
      +++ trunk/as2api/html_output.rb	2005-06-07 16:59:33 UTC (rev 96)
      @@ -635,28 +635,35 @@
      
         end
       end
       
      
      -def document_type(type)
      -  encoding = if type.source_utf8
      
      +
      +class TypePage
      +
      +  def initialize(type)
      +    @type = type
      +  end
      +
      +def generate
      +  encoding = if @type.source_utf8
      
           "utf-8"
         else
           "iso-8859-1"
         end
      
      -  html_body(type.unqualified_name, type.qualified_name, :strict, encoding) do |out|
      
      +  html_body(@type.unqualified_name, @type.qualified_name, :strict, encoding) do |out|
      
           skip_nav(out) do
             class_navigation(out)
           end
      
      -    if type.instance_of?(ASClass)
      -      out.element_h1("Class "+type.qualified_name)
      -    elsif type.instance_of?(ASInterface)
      -      out.element_h1("Interface "+type.qualified_name)
      
      +    if @type.instance_of?(ASClass)
      +      out.element_h1("Class "+@type.qualified_name)
      +    elsif @type.instance_of?(ASInterface)
      +      out.element_h1("Interface "+@type.qualified_name)
      
           end
       
      
      -    type_hierachy(out, type)
      
      +    type_hierachy(out, @type)
      
       
      
      -    if type.implements_interfaces?
      
      +    if @type.implements_interfaces?
      
             out.element_div("class"=>"interfaces") do
       	out.element_h2("Implemented Interfaces")
      
      -	type.each_interface do |interface|
      
      +	@type.each_interface do |interface|
      
       	  # TODO: need to resolve interface name, make links
       	  out.element_code do
       	    link_type_proxy(out, interface)
      
      @@ -666,8 +673,8 @@
      
             end
           end
           out.element_div("class"=>"type_description") do
      
      -      if type.comment
      -        comment_data = type.comment
      
      +      if @type.comment
      +        comment_data = @type.comment
      
       
       	out.element_h2("Description")
       	out.element_p do
      
      @@ -688,16 +695,19 @@
      
             end
           end
           
      
      -    field_index_list(out, type) if type.fields?
      -    method_index_list(out, type) if type.methods?
      -    constructor_detail(out, type) if type.constructor? && document_member?(type.constructor)
      -    field_detail_list(out, type) if type.fields?
      -    method_detail_list(out, type) if type.methods?
      
      +    field_index_list(out, @type) if @type.fields?
      +    method_index_list(out, @type) if @type.methods?
      +    constructor_detail(out, @type) if @type.constructor? && document_member?(@type.constructor)
      +    field_detail_list(out, @type) if @type.fields?
      +    method_detail_list(out, @type) if @type.methods?
      
       
           class_navigation(out)
         end
       end
       
      
      +end
      +
      +
      
       def list_see_also(out, docs)
         docs.each_see_also do |see|
           out.comment(" parsing for see-also not done yet ")
      
      @@ -730,18 +740,25 @@
      
       
       def package_pages(package)
         in_subdir(package_dir_for(package)) do
      
      -    package_index(package)
      -    package_frame(package)
      
      +    PackageIndexPage.new(package).generate
      +    PackageFramePage.new(package).generate
      
         end
       end
       
      
      -def package_index(package)
      -  html_body("package-summary", "Package #{package_display_name_for(package)} API Documentation") do |out|
      
      +
      +class PackageIndexPage
      +
      +  def initialize(package)
      +    @package = package
      +  end
      +
      +def generate
      +  html_body("package-summary", "Package #{package_display_name_for(@package)} API Documentation") do |out|
      
           skip_nav(out) do
             package_navigation(out)
           end
      
      -    out.element_h1("Package "+package_display_name_for(package))
      -    interfaces = package.interfaces
      
      +    out.element_h1("Package "+package_display_name_for(@package))
      +    interfaces = @package.interfaces
      
           unless interfaces.empty?
             interfaces.sort!
             out.element_table("class"=>"summary_list", "summary"=>"") do
      
      @@ -761,7 +778,7 @@
      
       	end
             end
           end
      
      -    classes = package.classes
      
      +    classes = @package.classes
      
           unless classes.empty?
             classes.sort!
             out.element_table("class"=>"summary_list", "summary"=>"") do
      
      @@ -785,13 +802,22 @@
      
         end
       end
       
      
      -def package_frame(package)
      -  html_file("package-frame", "Package #{package_display_name_for(package)} API Naviation", :transitional) do |out|
      
      +end
      +
      +
      +class PackageFramePage
      +
      +  def initialize(package)
      +    @package = package
      +  end
      +
      +  def generate
      +  html_file("package-frame", "Package #{package_display_name_for(@package)} API Naviation", :transitional) do |out|
      
           out.element_body do
             out.element_p do
      
      -	out.element_a(package_display_name_for(package), {"href"=>"package-summary.html", "target"=>"type_frame"})
      
      +	out.element_a(package_display_name_for(@package), {"href"=>"package-summary.html", "target"=>"type_frame"})
      
             end
      
      -      interfaces = package.interfaces
      
      +      interfaces = @package.interfaces
      
             unless interfaces.empty?
       	interfaces.sort!
       	out.element_h3("Interfaces")
      
      @@ -804,7 +830,7 @@
      
       	  end
       	end
             end
      
      -      classes = package.classes
      
      +      classes = @package.classes
      
             unless classes.empty?
       	classes.sort!
       	out.element_h3("Classes")
      
      @@ -821,6 +847,8 @@
      
         end
       end
       
      
      +end
      +
      
       def overview_navigation(out)
         out.element_div("class"=>"main_nav") do
           out.element_span("Overview", {"class"=>"nav_current"})
      
      @@ -830,7 +858,12 @@
      
         end
       end
       
      
      -def overview(type_agregator)
      
      +class OverviewPage
      +  def initialize(type_agregator)
      +    @type_agregator = type_agregator
      +  end
      +
      +def generate
      
         html_body("overview-summary", "API Overview") do |out|
           skip_nav(out) do
             overview_navigation(out)
      
      @@ -840,7 +873,7 @@
      
             out.element_tr do
       	out.element_th("Packages")
             end
      
      -      packages = type_agregator.packages.sort
      
      +      packages = @type_agregator.packages.sort
      
             packages.each do |package|
       	out.element_tr do
           
      
      @@ -858,7 +891,16 @@
      
         end
       end
       
      
      -def overview_frame(type_agregator)
      
      +end
      +
      +
      +class OverviewFramePage
      +
      +  def initialize(type_agregator)
      +    @type_agregator = type_agregator
      +  end
      +
      +def generate
      
         html_file("overview-frame", "API Overview", :transitional) do |out|
           out.element_body do
             out.element_h3("Packages")
      
      @@ -867,7 +909,7 @@
      
       	out.element_li do
       	  out.element_a("(All Types)", {"href"=>"all-types-frame.html", "target"=>"current_package_frame"})
       	end
      
      -	packages = type_agregator.packages.sort
      
      +	packages = @type_agregator.packages.sort
      
       	packages.each do |package|
             
       	  out.element_li do
      
      @@ -881,6 +923,9 @@
      
         end
       end
       
      
      +end
      +
      +
      
       def package_list(type_agregator)
         # REVISIT: Will a package list actually be useful for ActionScript, or can
         #          we always assume that any code that makes reference to a type
      
      @@ -894,12 +939,19 @@
      
         end
       end
       
      
      -def all_types_frame(type_agregator)
      
      +
      +class AllTypesFramePage
      +
      +  def initialize(type_agregator)
      +    @type_agregator = type_agregator
      +  end
      +
      +def generate
      
         html_file("all-types-frame", "as2api", :transitional) do |out|
           out.element_body do
             out.element_h3("All Types")
             out.element_ul("class"=>"navigation_list") do
      
      -	types = type_agregator.types.sort do |a,b|
      
      +	types = @type_agregator.types.sort do |a,b|
      
       	  cmp = a.unqualified_name.downcase <=> b.unqualified_name.downcase
       	  if cmp == 0
       	    a.qualified_name <=> b.qualified_name
      
      @@ -920,6 +972,9 @@
      
         end
       end
       
      
      +end
      +
      +
      
       def frameset
         html_file("frameset", "as2api", :frameset) do |out|
           out.element_frameset("cols"=>"20%,80%") do
      
      @@ -1008,10 +1063,15 @@
      
         end
       end
       
      
      -def index_files(type_agregator)
      
      +class IndexPage
      +  def initialize(type_agregator)
      +    @type_agregator = type_agregator
      +  end
      +
      +def create_index()
      
         index = []
         # TODO: include packages
      
      -  type_agregator.each_type do |astype|
      
      +  @type_agregator.each_type do |astype|
      
           if astype.document?
             index << TypeIndexTerm.new(astype)
             astype.each_method do |asmethod|
      
      @@ -1030,7 +1090,11 @@
      
         end
       
         index.sort!
      
      +end
      
       
      
      +def generate
      +  index = create_index()
      +
      
         in_subdir("index-files") do
           html_body("index", "Alphabetical Index") do |out|
             index_navigation(out)
      
      @@ -1044,13 +1108,15 @@
      
         end
       end
       
      
      +end
      +
      
       def document_types(output_path, type_agregator)
         in_subdir(output_path) do
           frameset()
      
      -    overview(type_agregator)
      -    overview_frame(type_agregator)
      
      +    OverviewPage.new(type_agregator).generate
      +    OverviewFramePage.new(type_agregator).generate
      
           package_list(type_agregator)
      
      -    all_types_frame(type_agregator)
      
      +    AllTypesFramePage.new(type_agregator).generate
      
       
           # packages..
           type_agregator.each_package do |package|
      
      @@ -1061,12 +1127,12 @@
      
           type_agregator.each_type do |type|
             if type.document?
       	in_subdir(type.package_name.gsub(/\./, "/")) do
      
      -	  document_type(type)
      
      +	  TypePage.new(type).generate
      
       	end
             end
           end
       
      
      -    index_files(type_agregator)
      
      +    IndexPage.new(type_agregator).generate
      
         end
       end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 17:04:33 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 17:04:33 +0000 Subject: [as2api-dev] [CVS trunk] Fix indentation. Changes to whitespace only. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+190-19096 -> 97
      Fix indentation.  Changes to whitespace only.
      

      trunk/as2api
      html_output.rb 96 -> 97
      --- trunk/as2api/html_output.rb	2005-06-07 16:59:33 UTC (rev 96)
      +++ trunk/as2api/html_output.rb	2005-06-07 17:04:30 UTC (rev 97)
      @@ -642,68 +642,68 @@
      
           @type = type
         end
       
      
      -def generate
      -  encoding = if @type.source_utf8
      -    "utf-8"
      -  else
      -    "iso-8859-1"
      -  end
      -  html_body(@type.unqualified_name, @type.qualified_name, :strict, encoding) do |out|
      -    skip_nav(out) do
      -      class_navigation(out)
      
      +  def generate
      +    encoding = if @type.source_utf8
      +      "utf-8"
      +    else
      +      "iso-8859-1"
      
           end
      
      -    if @type.instance_of?(ASClass)
      -      out.element_h1("Class "+@type.qualified_name)
      -    elsif @type.instance_of?(ASInterface)
      -      out.element_h1("Interface "+@type.qualified_name)
      -    end
      
      +    html_body(@type.unqualified_name, @type.qualified_name, :strict, encoding) do |out|
      +      skip_nav(out) do
      +	class_navigation(out)
      +      end
      +      if @type.instance_of?(ASClass)
      +	out.element_h1("Class "+@type.qualified_name)
      +      elsif @type.instance_of?(ASInterface)
      +	out.element_h1("Interface "+@type.qualified_name)
      +      end
      
       
      
      -    type_hierachy(out, @type)
      
      +      type_hierachy(out, @type)
      
       
      
      -    if @type.implements_interfaces?
      -      out.element_div("class"=>"interfaces") do
      -	out.element_h2("Implemented Interfaces")
      -	@type.each_interface do |interface|
      -	  # TODO: need to resolve interface name, make links
      -	  out.element_code do
      -	    link_type_proxy(out, interface)
      
      +      if @type.implements_interfaces?
      +	out.element_div("class"=>"interfaces") do
      +	  out.element_h2("Implemented Interfaces")
      +	  @type.each_interface do |interface|
      +	    # TODO: need to resolve interface name, make links
      +	    out.element_code do
      +	      link_type_proxy(out, interface)
      +	    end
      +	    out.pcdata(" ")
      
       	  end
      
      -	  out.pcdata(" ")
      
       	end
             end
      
      -    end
      -    out.element_div("class"=>"type_description") do
      -      if @type.comment
      -        comment_data = @type.comment
      
      +      out.element_div("class"=>"type_description") do
      +	if @type.comment
      +	  comment_data = @type.comment
      
       
      
      -	out.element_h2("Description")
      -	out.element_p do
      -          output_doccomment_blocktag(out, comment_data[0])
      -	end
      -	out.element_dl("class"=>"type_details") do
      -	  if comment_has_seealso?(comment_data)
      -	    out.element_dt("See Also")
      -	    out.element_dd do
      -	      comment_each_seealso(comment_data) do |see_comment|
      -	        out.element_p do
      -                  output_doccomment_blocktag(out, see_comment)
      
      +	  out.element_h2("Description")
      +	  out.element_p do
      +	    output_doccomment_blocktag(out, comment_data[0])
      +	  end
      +	  out.element_dl("class"=>"type_details") do
      +	    if comment_has_seealso?(comment_data)
      +	      out.element_dt("See Also")
      +	      out.element_dd do
      +		comment_each_seealso(comment_data) do |see_comment|
      +		  out.element_p do
      +		    output_doccomment_blocktag(out, see_comment)
      +		  end
      
       		end
       	      end
       	    end
       	  end
       	end
             end
      
      +      
      +      field_index_list(out, @type) if @type.fields?
      +      method_index_list(out, @type) if @type.methods?
      +      constructor_detail(out, @type) if @type.constructor? && document_member?(@type.constructor)
      +      field_detail_list(out, @type) if @type.fields?
      +      method_detail_list(out, @type) if @type.methods?
      +
      +      class_navigation(out)
      
           end
      
      -    
      -    field_index_list(out, @type) if @type.fields?
      -    method_index_list(out, @type) if @type.methods?
      -    constructor_detail(out, @type) if @type.constructor? && document_member?(@type.constructor)
      -    field_detail_list(out, @type) if @type.fields?
      -    method_detail_list(out, @type) if @type.methods?
      -
      -    class_navigation(out)
      
         end
      
      -end
      
       
       end
       
      
      @@ -752,55 +752,55 @@
      
           @package = package
         end
       
      
      -def generate
      -  html_body("package-summary", "Package #{package_display_name_for(@package)} API Documentation") do |out|
      -    skip_nav(out) do
      -      package_navigation(out)
      -    end
      -    out.element_h1("Package "+package_display_name_for(@package))
      -    interfaces = @package.interfaces
      -    unless interfaces.empty?
      -      interfaces.sort!
      -      out.element_table("class"=>"summary_list", "summary"=>"") do
      -	out.element_tr do
      -	  out.element_th("Interface Summary")
      -	end
      -	interfaces.each do |type|
      
      +  def generate
      +    html_body("package-summary", "Package #{package_display_name_for(@package)} API Documentation") do |out|
      +      skip_nav(out) do
      +	package_navigation(out)
      +      end
      +      out.element_h1("Package "+package_display_name_for(@package))
      +      interfaces = @package.interfaces
      +      unless interfaces.empty?
      +	interfaces.sort!
      +	out.element_table("class"=>"summary_list", "summary"=>"") do
      
       	  out.element_tr do
      
      -      
      -	    out.element_td do
      -	      out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
      
      +	    out.element_th("Interface Summary")
      +	  end
      +	  interfaces.each do |type|
      +	    out.element_tr do
      +	
      +	      out.element_td do
      +		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
      +	      end
      +	      #out.element_td do
      +		# TODO: package description
      +	      #end
      
       	    end
      
      -	    #out.element_td do
      -	      # TODO: package description
      -	    #end
      
       	  end
       	end
             end
      
      -    end
      -    classes = @package.classes
      -    unless classes.empty?
      -      classes.sort!
      -      out.element_table("class"=>"summary_list", "summary"=>"") do
      -	out.element_tr do
      -	  out.element_th("Class Summary")
      -	end
      -	classes.each do |type|
      
      +      classes = @package.classes
      +      unless classes.empty?
      +	classes.sort!
      +	out.element_table("class"=>"summary_list", "summary"=>"") do
      
       	  out.element_tr do
      
      -      
      -	    out.element_td do
      -	      out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
      
      +	    out.element_th("Class Summary")
      +	  end
      +	  classes.each do |type|
      +	    out.element_tr do
      +	
      +	      out.element_td do
      +		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
      +	      end
      +	      #out.element_td do
      +		# TODO: package description
      +	      #end
      
       	    end
      
      -	    #out.element_td do
      -	      # TODO: package description
      -	    #end
      
       	  end
       	end
             end
      
      +      package_navigation(out)
      
           end
      
      -    package_navigation(out)
      
         end
      
      -end
      
       
       end
       
      
      @@ -812,40 +812,40 @@
      
         end
       
         def generate
      
      -  html_file("package-frame", "Package #{package_display_name_for(@package)} API Naviation", :transitional) do |out|
      -    out.element_body do
      -      out.element_p do
      -	out.element_a(package_display_name_for(@package), {"href"=>"package-summary.html", "target"=>"type_frame"})
      -      end
      -      interfaces = @package.interfaces
      -      unless interfaces.empty?
      -	interfaces.sort!
      -	out.element_h3("Interfaces")
      -	out.element_ul("class"=>"navigation_list") do
      -	  interfaces.each do |type|
      -	
      -	    out.element_li do
      -	      out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      
      +    html_file("package-frame", "Package #{package_display_name_for(@package)} API Naviation", :transitional) do |out|
      +      out.element_body do
      +	out.element_p do
      +	  out.element_a(package_display_name_for(@package), {"href"=>"package-summary.html", "target"=>"type_frame"})
      +	end
      +	interfaces = @package.interfaces
      +	unless interfaces.empty?
      +	  interfaces.sort!
      +	  out.element_h3("Interfaces")
      +	  out.element_ul("class"=>"navigation_list") do
      +	    interfaces.each do |type|
      +	  
      +	      out.element_li do
      +		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      +	      end
      
       	    end
       	  end
       	end
      
      -      end
      -      classes = @package.classes
      -      unless classes.empty?
      -	classes.sort!
      -	out.element_h3("Classes")
      -	out.element_ul("class"=>"navigation_list") do
      -	  classes.each do |type|
      -	
      -	    out.element_li do
      -	      out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      
      +	classes = @package.classes
      +	unless classes.empty?
      +	  classes.sort!
      +	  out.element_h3("Classes")
      +	  out.element_ul("class"=>"navigation_list") do
      +	    classes.each do |type|
      +	  
      +	      out.element_li do
      +		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      +	      end
      
       	    end
       	  end
       	end
             end
           end
         end
      
      -end
      
       
       end
       
      
      @@ -863,33 +863,33 @@
      
           @type_agregator = type_agregator
         end
       
      
      -def generate
      -  html_body("overview-summary", "API Overview") do |out|
      -    skip_nav(out) do
      -      overview_navigation(out)
      -    end
      -    out.element_h1("API Overview")
      -    out.element_table("class"=>"summary_list", "summary"=>"") do
      -      out.element_tr do
      -	out.element_th("Packages")
      
      +  def generate
      +    html_body("overview-summary", "API Overview") do |out|
      +      skip_nav(out) do
      +	overview_navigation(out)
      
             end
      
      -      packages = @type_agregator.packages.sort
      -      packages.each do |package|
      
      +      out.element_h1("API Overview")
      +      out.element_table("class"=>"summary_list", "summary"=>"") do
      
       	out.element_tr do
      
      -    
      -	  out.element_td do
      -	    name = package_display_name_for(package)
      -	    out.element_a(name, {"href"=>package_link_for(package, "package-summary.html")})
      
      +	  out.element_th("Packages")
      +	end
      +	packages = @type_agregator.packages.sort
      +	packages.each do |package|
      +	  out.element_tr do
      +      
      +	    out.element_td do
      +	      name = package_display_name_for(package)
      +	      out.element_a(name, {"href"=>package_link_for(package, "package-summary.html")})
      +	    end
      +	    #out.element_td do
      +	      # TODO: package description
      +	    #end
      
       	  end
      
      -	  #out.element_td do
      -	    # TODO: package description
      -	  #end
      
       	end
             end
      
      +      overview_navigation(out)
      
           end
      
      -    overview_navigation(out)
      
         end
      
      -end
      
       
       end
       
      
      @@ -900,28 +900,28 @@
      
           @type_agregator = type_agregator
         end
       
      
      -def generate
      -  html_file("overview-frame", "API Overview", :transitional) do |out|
      -    out.element_body do
      -      out.element_h3("Packages")
      -      out.element_ul("class"=>"navigation_list") do
      -      
      -	out.element_li do
      -	  out.element_a("(All Types)", {"href"=>"all-types-frame.html", "target"=>"current_package_frame"})
      -	end
      -	packages = @type_agregator.packages.sort
      -	packages.each do |package|
      -      
      
      +  def generate
      +    html_file("overview-frame", "API Overview", :transitional) do |out|
      +      out.element_body do
      +	out.element_h3("Packages")
      +	out.element_ul("class"=>"navigation_list") do
      +	
      
       	  out.element_li do
      
      -	    name = package_display_name_for(package)
      -	    
      -	    out.element_a(name, {"href"=>package_link_for(package, "package-frame.html"), "target"=>"current_package_frame", "title"=>name})
      
      +	    out.element_a("(All Types)", {"href"=>"all-types-frame.html", "target"=>"current_package_frame"})
      
       	  end
      
      +	  packages = @type_agregator.packages.sort
      +	  packages.each do |package|
      +	
      +	    out.element_li do
      +	      name = package_display_name_for(package)
      +	      
      +	      out.element_a(name, {"href"=>package_link_for(package, "package-frame.html"), "target"=>"current_package_frame", "title"=>name})
      +	    end
      +	  end
      
       	end
             end
           end
         end
      
      -end
      
       
       end
       
      
      @@ -946,31 +946,31 @@
      
           @type_agregator = type_agregator
         end
       
      
      -def generate
      -  html_file("all-types-frame", "as2api", :transitional) do |out|
      -    out.element_body do
      -      out.element_h3("All Types")
      -      out.element_ul("class"=>"navigation_list") do
      -	types = @type_agregator.types.sort do |a,b|
      -	  cmp = a.unqualified_name.downcase <=> b.unqualified_name.downcase
      -	  if cmp == 0
      -	    a.qualified_name <=> b.qualified_name
      -	  else
      -	    cmp
      
      +  def generate
      +    html_file("all-types-frame", "as2api", :transitional) do |out|
      +      out.element_body do
      +	out.element_h3("All Types")
      +	out.element_ul("class"=>"navigation_list") do
      +	  types = @type_agregator.types.sort do |a,b|
      +	    cmp = a.unqualified_name.downcase <=> b.unqualified_name.downcase
      +	    if cmp == 0
      +	      a.qualified_name <=> b.qualified_name
      +	    else
      +	      cmp
      +	    end
      
       	  end
      
      -	end
      -	types.each do |type|
      -	  if type.document?
      -	    href = type.qualified_name.gsub(/\./, "/") + ".html"
      -	    out.element_li do
      -	      out.element_a(type.unqualified_name, {"href"=>href, "title"=>type.qualified_name, "target"=>"type_frame"})
      
      +	  types.each do |type|
      +	    if type.document?
      +	      href = type.qualified_name.gsub(/\./, "/") + ".html"
      +	      out.element_li do
      +		out.element_a(type.unqualified_name, {"href"=>href, "title"=>type.qualified_name, "target"=>"type_frame"})
      +	      end
      
       	    end
       	  end
       	end
             end
           end
         end
      
      -end
      
       
       end
       
      
      @@ -1068,45 +1068,45 @@
      
           @type_agregator = type_agregator
         end
       
      
      -def create_index()
      -  index = []
      -  # TODO: include packages
      -  @type_agregator.each_type do |astype|
      -    if astype.document?
      -      index << TypeIndexTerm.new(astype)
      -      astype.each_method do |asmethod|
      -      	if document_member?(asmethod)
      -	  index << MethodIndexTerm.new(astype, asmethod)
      
      +  def create_index()
      +    index = []
      +    # TODO: include packages
      +    @type_agregator.each_type do |astype|
      +      if astype.document?
      +	index << TypeIndexTerm.new(astype)
      +	astype.each_method do |asmethod|
      +	  if document_member?(asmethod)
      +	    index << MethodIndexTerm.new(astype, asmethod)
      +	  end
      
       	end
      
      -      end
      -      if astype.is_a?(ASClass)
      -	astype.each_field do |asfield|
      -      	  if document_member?(asfield)
      -	    index << FieldIndexTerm.new(astype, asfield)
      
      +	if astype.is_a?(ASClass)
      +	  astype.each_field do |asfield|
      +	    if document_member?(asfield)
      +	      index << FieldIndexTerm.new(astype, asfield)
      +	    end
      
       	  end
       	end
             end
           end
      
      +
      +    index.sort!
      
         end
       
      
      -  index.sort!
      -end
      
      +  def generate
      +    index = create_index()
      
       
      
      -def generate
      -  index = create_index()
      -
      -  in_subdir("index-files") do
      -    html_body("index", "Alphabetical Index") do |out|
      -      index_navigation(out)
      -      index.each do |element|
      -	out.element_p do
      -	  element.link(out)
      
      +    in_subdir("index-files") do
      +      html_body("index", "Alphabetical Index") do |out|
      +	index_navigation(out)
      +	index.each do |element|
      +	  out.element_p do
      +	    element.link(out)
      +	  end
      
       	end
      
      +	index_navigation(out)
      
             end
      
      -      index_navigation(out)
      
           end
         end
      
      -end
      
       
       end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 17:15:41 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 17:15:41 +0000 Subject: [as2api-dev] [CVS trunk] Convert top-level *_navigation() functions into *Page.navigation() methods Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+44-4497 -> 98
      Convert top-level *_navigation() functions into *Page.navigation() methods
      

      trunk/as2api
      html_output.rb 97 -> 98
      --- trunk/as2api/html_output.rb	2005-06-07 17:04:30 UTC (rev 97)
      +++ trunk/as2api/html_output.rb	2005-06-07 17:15:40 UTC (rev 98)
      @@ -126,15 +126,6 @@
      
       end
       
       
      
      -def class_navigation(out)
      -  out.element_div("class"=>"main_nav") do
      -    out.element_a("Overview", {"href"=>base_path("overview-summary.html")})
      -    out.element_a("Package", {"href"=>"package-summary.html"})
      -    out.element_span("Class", {"class"=>"nav_current"})
      -    out.element_a("Index", {"href"=>base_path("index-files/index.html")})
      -  end
      -end
      -
      
       def comment_each_block_of_type(comment_data, type)
         comment_data.each_block do |block|
           yield block if block.is_a?(type)
      
      @@ -650,7 +641,7 @@
      
           end
           html_body(@type.unqualified_name, @type.qualified_name, :strict, encoding) do |out|
             skip_nav(out) do
      
      -	class_navigation(out)
      
      +	navigation(out)
      
             end
             if @type.instance_of?(ASClass)
       	out.element_h1("Class "+@type.qualified_name)
      
      @@ -701,10 +692,19 @@
      
             field_detail_list(out, @type) if @type.fields?
             method_detail_list(out, @type) if @type.methods?
       
      
      -      class_navigation(out)
      
      +      navigation(out)
      
           end
         end
       
      
      +  def navigation(out)
      +    out.element_div("class"=>"main_nav") do
      +      out.element_a("Overview", {"href"=>base_path("overview-summary.html")})
      +      out.element_a("Package", {"href"=>"package-summary.html"})
      +      out.element_span("Class", {"class"=>"nav_current"})
      +      out.element_a("Index", {"href"=>base_path("index-files/index.html")})
      +    end
      +  end
      +
      
       end
       
       
      
      @@ -729,15 +729,6 @@
      
         package_dir_for(package) + "/" + page
       end
       
      
      -def package_navigation(out)
      -  out.element_div("class"=>"main_nav") do
      -    out.element_a("Overview", {"href"=>base_path("overview-summary.html")})
      -    out.element_span("Package", {"class"=>"nav_current"})
      -    out.element_span("Class")
      -    out.element_a("Index", {"href"=>base_path("index-files/index.html")})
      -  end
      -end
      -
      
       def package_pages(package)
         in_subdir(package_dir_for(package)) do
           PackageIndexPage.new(package).generate
      
      @@ -755,7 +746,7 @@
      
         def generate
           html_body("package-summary", "Package #{package_display_name_for(@package)} API Documentation") do |out|
             skip_nav(out) do
      
      -	package_navigation(out)
      
      +	navigation(out)
      
             end
             out.element_h1("Package "+package_display_name_for(@package))
             interfaces = @package.interfaces
      
      @@ -798,10 +789,19 @@
      
       	  end
       	end
             end
      
      -      package_navigation(out)
      
      +      navigation(out)
      
           end
         end
       
      
      +  def navigation(out)
      +    out.element_div("class"=>"main_nav") do
      +      out.element_a("Overview", {"href"=>base_path("overview-summary.html")})
      +      out.element_span("Package", {"class"=>"nav_current"})
      +      out.element_span("Class")
      +      out.element_a("Index", {"href"=>base_path("index-files/index.html")})
      +    end
      +  end
      +
      
       end
       
       
      
      @@ -849,15 +849,6 @@
      
       
       end
       
      
      -def overview_navigation(out)
      -  out.element_div("class"=>"main_nav") do
      -    out.element_span("Overview", {"class"=>"nav_current"})
      -    out.element_span("Package")
      -    out.element_span("Class")
      -    out.element_a("Index", {"href"=>"index-files/index.html"})
      -  end
      -end
      -
      
       class OverviewPage
         def initialize(type_agregator)
           @type_agregator = type_agregator
      
      @@ -866,7 +857,7 @@
      
         def generate
           html_body("overview-summary", "API Overview") do |out|
             skip_nav(out) do
      
      -	overview_navigation(out)
      
      +	navigation(out)
      
             end
             out.element_h1("API Overview")
             out.element_table("class"=>"summary_list", "summary"=>"") do
      
      @@ -887,10 +878,19 @@
      
       	  end
       	end
             end
      
      -      overview_navigation(out)
      
      +      navigation(out)
      
           end
         end
       
      
      +  def navigation(out)
      +    out.element_div("class"=>"main_nav") do
      +      out.element_span("Overview", {"class"=>"nav_current"})
      +      out.element_span("Package")
      +      out.element_span("Class")
      +      out.element_a("Index", {"href"=>"index-files/index.html"})
      +    end
      +  end
      +
      
       end
       
       
      
      @@ -1054,15 +1054,6 @@
      
         end
       end
       
      
      -def index_navigation(out)
      -  out.element_div("class"=>"main_nav") do
      -    out.element_a("Overview", {"href"=>base_path("overview-summary.html")})
      -    out.element_span("Package")
      -    out.element_span("Class")
      -    out.element_span("Index", {"class"=>"nav_current"})
      -  end
      -end
      -
      
       class IndexPage
         def initialize(type_agregator)
           @type_agregator = type_agregator
      
      @@ -1097,17 +1088,26 @@
      
       
           in_subdir("index-files") do
             html_body("index", "Alphabetical Index") do |out|
      
      -	index_navigation(out)
      
      +	navigation(out)
      
       	index.each do |element|
       	  out.element_p do
       	    element.link(out)
       	  end
       	end
      
      -	index_navigation(out)
      
      +	navigation(out)
      
             end
           end
         end
       
      
      +  def navigation(out)
      +    out.element_div("class"=>"main_nav") do
      +      out.element_a("Overview", {"href"=>base_path("overview-summary.html")})
      +      out.element_span("Package")
      +      out.element_span("Class")
      +      out.element_span("Index", {"class"=>"nav_current"})
      +    end
      +  end
      +
      
       end
       
       def document_types(output_path, type_agregator)
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 17:40:24 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 17:40:24 +0000 Subject: [as2api-dev] [CVS trunk] Turn a million-billion top-level functions into methods of TypePage Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+474-47098 -> 99
      Turn a million-billion top-level functions into methods of TypePage
      

      trunk/as2api
      html_output.rb 98 -> 99
      --- trunk/as2api/html_output.rb	2005-06-07 17:15:40 UTC (rev 98)
      +++ trunk/as2api/html_output.rb	2005-06-07 17:40:24 UTC (rev 99)
      @@ -43,219 +43,7 @@
      
         end
       end
       
      
      -def method_synopsis(out, method)
      -  out.element_code("class"=>"method_synopsis") do
      -    if method.access.is_static
      -      out.pcdata("static ")
      -    end
      -    unless method.access.visibility.nil?
      -      out.pcdata("#{method.access.visibility.body} ")
      -    end
      -    out.pcdata("function ")
      -    out.element_strong("class"=>"method_name") do
      -      out.pcdata(method.name)
      -    end
      -    out.pcdata("(")
      -    method.arguments.each_with_index do |arg, index|
      -      out.pcdata(", ") if index > 0
      -      out.pcdata(arg.name)
      -      if arg.arg_type
      -        out.pcdata(":")
      -	link_type_proxy(out, arg.arg_type)
      -      end
      -    end
      -    out.pcdata(")")
      -    if method.return_type
      -      out.pcdata(":")
      -      link_type_proxy(out, method.return_type)
      -    end
      -  end
      -end
      
       
      
      -def field_synopsis(out, field)
      -  out.element_code("class"=>"field_synopsis") do
      -    if field.instance_of?(ASImplicitField)
      -      implicit_field_synopsis(out, field)
      -    else
      -      explicit_field_synopsis(out, field)
      -    end
      -  end
      -end
      -
      -def explicit_field_synopsis(out, field)
      -  if field.access.is_static
      -    out.pcdata("static ")
      -  end
      -  unless field.access.visibility.nil?
      -    out.pcdata("#{field.access.visibility.body} ")
      -  end
      -  out.element_strong("class"=>"field_name") do
      -    out.pcdata(field.name)
      -  end
      -  if field.field_type
      -    out.pcdata(":")
      -    link_type_proxy(out, field.field_type)
      -  end
      -end
      -
      -def implicit_field_synopsis(out, field)
      -  if field.access.is_static
      -    out.pcdata("static ")
      -  end
      -  unless field.access.visibility.nil?
      -    out.pcdata("#{field.access.visibility.body} ")
      -  end
      -  out.element_strong("class"=>"field_name") do
      -    out.pcdata(field.name)
      -  end
      -  field_type = field.field_type
      -  unless field_type.nil?
      -    out.pcdata(":")
      -    link_type_proxy(out, field_type)
      -  end
      -  unless field.readwrite?
      -    out.pcdata(" ")
      -    out.element_em("class"=>"read_write_only") do
      -      if field.read?
      -	out.pcdata("[Read Only]")
      -      else
      -	out.pcdata("[Write Only]")
      -      end
      -    end
      -  end
      -end
      -
      -
      -def comment_each_block_of_type(comment_data, type)
      -  comment_data.each_block do |block|
      -    yield block if block.is_a?(type)
      -  end
      -end
      -
      -def comment_has_blocktype?(comment_data, type)
      -  comment_each_block_of_type(comment_data, type) do |block|
      -    return true
      -  end
      -  return false
      -end
      -
      -def comment_has_params?(comment_data)
      -  return comment_has_blocktype?(comment_data, ParamBlockTag)
      -end
      -
      -def comment_has_exceptions?(comment_data)
      -  return comment_has_blocktype?(comment_data, ThrowsBlockTag)
      -end
      -
      -def comment_has_seealso?(comment_data)
      -  return comment_has_blocktype?(comment_data, SeeBlockTag)
      -end
      -
      -def comment_has_return?(comment_data)
      -  return comment_has_blocktype?(comment_data, ReturnBlockTag)
      -end
      -
      -# Does the method comment include any info in addition to any basic description
      -# block?
      -def comment_has_method_additional_info?(comment_data)
      -  return comment_has_params?(comment_data) ||
      -         comment_has_return?(comment_data) ||
      -         comment_has_exceptions?(comment_data) ||
      -         comment_has_seealso?(comment_data)
      -end
      -
      -# Does the field comment include any info in addition to any basic description
      -# block?
      -def comment_has_field_additional_info?(comment_data)
      -  return comment_has_seealso?(comment_data)
      -end
      -
      -def comment_each_exception(comment_data)
      -  comment_data.each_block do |block|
      -    yield block if block.is_a?(ThrowsBlockTag)
      -  end
      -end
      -
      -def comment_each_seealso(comment_data)
      -  comment_each_block_of_type(comment_data, SeeBlockTag) do |block|
      -    yield block
      -  end
      -end
      -
      -def comment_find_param(comment_data, param_name)
      -  comment_each_block_of_type(comment_data, ParamBlockTag) do |block|
      -    return block if block.param_name == param_name
      -  end
      -  return nil
      -end
      -
      -def comment_find_return(comment_data)
      -  comment_each_block_of_type(comment_data, ReturnBlockTag) do |block|
      -    return block
      -  end
      -  return nil
      -end
      -
      -def document_parameters(out, arguments, comment_data)
      -  out.element_dt("Parameters")
      -  out.element_dd do
      -    out.element_table("class"=>"arguments", "summary"=>"") do
      -      arguments.each do |arg|
      -	desc = comment_find_param(comment_data, arg.name)
      -	if desc
      -	  out.element_tr do
      -	    out.element_td do
      -	      out.element_code(arg.name)
      -	    end
      -	    out.element_td do
      -	      output_doccomment_blocktag(out, desc)
      -	    end
      -	  end
      -	end
      -      end
      -    end
      -  end
      -end
      -
      -def document_return(out, comment_data)
      -  out.element_dt("Return")
      -  out.element_dd do
      -    return_comment = comment_find_return(comment_data)
      -    out.element_p do
      -      output_doccomment_blocktag(out, return_comment)
      -    end
      -  end
      -end
      -
      -def document_exceptions(out, comment_data)
      -  out.element_dt("Throws")
      -  out.element_dd do
      -    out.element_table("class"=>"exceptions", "summary"=>"") do
      -      comment_each_exception(comment_data) do |exception_comment|
      -	out.element_tr do
      -	  out.element_td do
      -	    link_type_proxy(out, exception_comment.exception_type)
      -	  end
      -	  out.element_td do
      -	    output_doccomment_blocktag(out, exception_comment)
      -	  end
      -	end
      -      end
      -    end
      -  end
      -end
      -
      -def document_seealso(out, comment_data)
      -  out.element_dt("See Also")
      -  out.element_dd do
      -    comment_each_seealso(comment_data) do |see_comment|
      -      out.element_p do
      -	output_doccomment_blocktag(out, see_comment)
      -      end
      -    end
      -  end
      -end
      -
      
       def link_method(out, method)
         out.element_a("href"=>link_for_method(method)) do
           out.pcdata(method.name)
      
      @@ -263,115 +51,6 @@
      
         end
       end
       
      
      -def document_specified_by(out, method)
      -  out.element_dt("Specified By")
      -  out.element_dd do
      -    link_method(out, method)
      -    out.pcdata(" in ")
      -    link_type(out, method.containing_type, true)
      -  end
      -end
      -
      -def method_additional_info?(method, comment_data)
      -  if method.containing_type.is_a?(ASClass)
      -    spec_method = method.specified_by
      -  else
      -    spec_method = nil
      -  end
      -  return comment_has_method_additional_info?(comment_data) || !spec_method.nil?
      -end
      -
      -def document_method(out, method, alt_row=false)
      -  css_class = "method_details"
      -  css_class << " alt_row" if alt_row
      -  out.element_div("class"=>css_class) do
      -    out.element_a("name"=>"method_#{method.name}")
      -    out.element_h3(method.name)
      -    method_synopsis(out, method)
      -    if method.comment
      -      out.element_blockquote do
      -        comment_data = method.comment
      -	out.element_p do
      -          output_doccomment_blocktag(out, comment_data[0])
      -	end
      -	if method_additional_info?(method, comment_data)
      -	  out.element_dl("class"=>"method_additional_info") do
      -	    # TODO: assumes that params named in docs match formal arguments
      -	    #       should really filter out those that don't match before this
      -	    #       test
      -	    if comment_has_params?(comment_data)
      -	      document_parameters(out, method.arguments, comment_data)
      -	    end
      -	    if comment_has_return?(comment_data)
      -	      document_return(out, comment_data)
      -	    end
      -	    if comment_has_exceptions?(comment_data)
      -	      document_exceptions(out, comment_data)
      -	    end
      -	    if method.containing_type.is_a?(ASClass)
      -	      spec_method = method.specified_by
      -	      unless spec_method.nil?
      -		document_specified_by(out, spec_method)
      -	      end
      -	    end
      -	    if comment_has_seealso?(comment_data)
      -	      document_seealso(out, comment_data)
      -	    end
      -	  end
      -	end
      -      end
      -    else
      -      if method.containing_type.is_a?(ASClass)
      -	spec_method = method.specified_by
      -	unless spec_method.nil?
      -	  out.element_blockquote do
      -	    out.element_dl("class"=>"method_additional_info") do
      -	      document_specified_by(out, spec_method)
      -	    end
      -	  end
      -	end
      -      end
      -    end
      -  end
      -end
      -
      -def output_doccomment_blocktag(out, block)
      -  block.each_inline do |inline|
      -    output_doccomment_inlinetag(out, inline)
      -  end
      -end
      -
      -def output_doccomment_inlinetag(out, inline)
      -  if inline.is_a?(String)
      -    out.pcdata(inline)
      -  elsif inline.is_a?(LinkTag)
      -    link_type_proxy(out, inline.target)
      -  else
      -    out.element_em(inline.inspect)
      -  end
      -end
      -
      -def document_field(out, field)
      -  out.element_a("name"=>"field_#{field.name}")
      -  out.element_h3(field.name)
      -  out.element_div("class"=>"field_details") do
      -    field_synopsis(out, field)
      -    if field.comment
      -      out.element_blockquote do
      -	comment_data = field.comment
      -	output_doccomment_blocktag(out, comment_data[0])
      -	if comment_has_field_additional_info?(comment_data)
      -	  out.element_dl("class"=>"field_additional_info") do
      -	    if comment_has_seealso?(comment_data)
      -	      document_seealso(out, comment_data)
      -	    end
      -	  end
      -	end
      -      end
      -    end
      -  end
      -end
      -
      
       $base_path = ""
       $path = ""
       
      
      @@ -460,160 +139,11 @@
      
         end
       end
       
      
      -def type_hierachy(out, type)
      -  # TODO: ASCII art is an accessability problem.  Replace with images that have
      -  #       alt-text, or use CSS to generate content, e.g.
      -  #          <span class="inherit_relation" title="inherited by"></span>
      -  out.element_pre("class"=>"type_hierachy") do
      -    count = 0
      -    unless type.extends.nil?
      -      count = type_hierachy_recursive(out, type.extends)
      -    end
      -    if count > 0
      -      out.pcdata("   " * count)
      -      out.pcdata("+--")
      -    end
      -    out.element_strong(type.qualified_name)
      -  end
      -end
      -
      -def type_hierachy_recursive(out, type_proxy)
      -  count = 0
      -  if type_proxy.resolved?
      -    type = type_proxy.resolved_type
      -    unless type.extends.nil?
      -      count = type_hierachy_recursive(out, type.extends)
      -    end
      -  else
      -    out.pcdata("????\n")
      -    count = 1
      -  end
      -  if count > 0
      -    out.pcdata("   " * count)
      -    out.pcdata("+--")
      -  end
      -  link_type_proxy(out, type_proxy, true)
      -  out.pcdata("\n")
      -  return count + 1
      -end
      -
      -def field_index_list(out, type)
      -  out.element_div("class"=>"field_index") do
      -    out.element_h2("Field Index")
      -    list_fields(out, type)
      -    if type.has_ancestor?
      -      out.element_dl do
      -	type.each_ancestor do |type|
      -	  if type.fields?
      -	    out.element_dt do
      -	      out.pcdata("Inherited from ")
      -	      link_type(out, type)
      -	    end
      -	    out.element_dd do
      -	      list_fields(out, type, link_for_type(type))
      -	    end
      -	  end
      -	end
      -      end
      -    end
      -  end
      -end
      -
      
       def document_member?(member)
         !member.access.private?
       end
       
      
      -def list_fields(out, type, href_prefix="")
      -  fields = type.fields.sort
      -  index = 0
      -  fields.each do |field|
      -    next unless document_member?(field)
      -    out.pcdata(", ") if index > 0
      -    out.element_code do
      -      out.element_a("href"=>"#{href_prefix}#field_#{field.name}") do
      -	out.pcdata(field.name)
      -      end
      -    end
      -    index += 1
      -  end
      -end
      
       
      
      -def field_detail_list(out, type)
      -  out.element_div("class"=>"field_detail_list") do
      -    out.element_h2("Field Detail")
      -    type.each_field do |field|
      -      document_field(out, field) if document_member?(field)
      -    end
      -  end
      -end
      -
      -
      -def method_index_list(out, type)
      -  out.element_div("class"=>"method_index") do
      -    out.element_h2("Method Index")
      -    if type.constructor? && document_member?(type.constructor)
      -      out.element_p do
      -        out.element_code do
      -          out.pcdata("new ")
      -	    out.element_a("href"=>"#method_#{type.constructor.name}") do
      -	      out.pcdata(type.constructor.name+"()")
      -	    end
      -        end
      -      end
      -    end
      -    known_method_names = []
      -    list_methods(out, type, known_method_names)
      -    if type.has_ancestor?
      -      out.element_dl do
      -	type.each_ancestor do |type|
      -	  if type.methods?
      -	    out.element_dt do
      -	      out.pcdata("Inherited from ")
      -	      link_type(out, type)
      -	    end
      -	    out.element_dd do
      -	      list_methods(out, type, known_method_names, link_for_type(type))
      -	    end
      -	  end
      -	end
      -      end
      -    end
      -  end
      -end
      -
      -def list_methods(out, type, known_method_names, href_prefix="")
      -  methods = type.methods.select do |method|
      -    !known_method_names.include?(method.name) && document_member?(method)
      -  end
      -  methods.sort!
      -  methods.each_with_index do |method, index|
      -    known_method_names << method.name
      -    out.pcdata(", ") if index > 0
      -    out.element_a("href"=>"#{href_prefix}#method_#{method.name}") do
      -      out.pcdata(method.name+"()")
      -    end
      -  end
      -end
      -
      -def method_detail_list(out, type)
      -  out.element_div("class"=>"method_detail_list") do
      -    out.element_h2("Method Detail")
      -    count = 0
      -    type.each_method do |method|
      -      next unless document_member?(method)
      -      document_method(out, method, count%2==0)
      -      count += 1
      -    end
      -  end
      -end
      -
      -def constructor_detail(out, type)
      -  out.element_div("class"=>"constructor_detail_list") do
      -    out.element_h2("Constructor Detail")
      -    document_method(out, type.constructor)
      -  end
      -end
      -
      
       # accessability; make a link to skip over the (navigation) elements produced
       # by the given block
       def skip_nav(out)
      
      @@ -705,6 +235,480 @@
      
           end
         end
       
      
      +  def field_index_list(out, type)
      +    out.element_div("class"=>"field_index") do
      +      out.element_h2("Field Index")
      +      list_fields(out, type)
      +      if type.has_ancestor?
      +	out.element_dl do
      +	  type.each_ancestor do |type|
      +	    if type.fields?
      +	      out.element_dt do
      +		out.pcdata("Inherited from ")
      +		link_type(out, type)
      +	      end
      +	      out.element_dd do
      +		list_fields(out, type, link_for_type(type))
      +	      end
      +	    end
      +	  end
      +	end
      +      end
      +    end
      +  end
      +
      +  def list_fields(out, type, href_prefix="")
      +    fields = type.fields.sort
      +    index = 0
      +    fields.each do |field|
      +      next unless document_member?(field)
      +      out.pcdata(", ") if index > 0
      +      out.element_code do
      +	out.element_a("href"=>"#{href_prefix}#field_#{field.name}") do
      +	  out.pcdata(field.name)
      +	end
      +      end
      +      index += 1
      +    end
      +  end
      +
      +  def method_index_list(out, type)
      +    out.element_div("class"=>"method_index") do
      +      out.element_h2("Method Index")
      +      if type.constructor? && document_member?(type.constructor)
      +	out.element_p do
      +	  out.element_code do
      +	    out.pcdata("new ")
      +	      out.element_a("href"=>"#method_#{type.constructor.name}") do
      +		out.pcdata(type.constructor.name+"()")
      +	      end
      +	  end
      +	end
      +      end
      +      known_method_names = []
      +      list_methods(out, type, known_method_names)
      +      if type.has_ancestor?
      +	out.element_dl do
      +	  type.each_ancestor do |type|
      +	    if type.methods?
      +	      out.element_dt do
      +		out.pcdata("Inherited from ")
      +		link_type(out, type)
      +	      end
      +	      out.element_dd do
      +		list_methods(out, type, known_method_names, link_for_type(type))
      +	      end
      +	    end
      +	  end
      +	end
      +      end
      +    end
      +  end
      +
      +  def list_methods(out, type, known_method_names, href_prefix="")
      +    methods = type.methods.select do |method|
      +      !known_method_names.include?(method.name) && document_member?(method)
      +    end
      +    methods.sort!
      +    methods.each_with_index do |method, index|
      +      known_method_names << method.name
      +      out.pcdata(", ") if index > 0
      +      out.element_a("href"=>"#{href_prefix}#method_#{method.name}") do
      +	out.pcdata(method.name+"()")
      +      end
      +    end
      +  end
      +
      +  def constructor_detail(out, type)
      +    out.element_div("class"=>"constructor_detail_list") do
      +      out.element_h2("Constructor Detail")
      +      document_method(out, type.constructor)
      +    end
      +  end
      +
      +  def field_detail_list(out, type)
      +    out.element_div("class"=>"field_detail_list") do
      +      out.element_h2("Field Detail")
      +      type.each_field do |field|
      +	document_field(out, field) if document_member?(field)
      +      end
      +    end
      +  end
      +
      +  def document_field(out, field)
      +    out.element_a("name"=>"field_#{field.name}")
      +    out.element_h3(field.name)
      +    out.element_div("class"=>"field_details") do
      +      field_synopsis(out, field)
      +      if field.comment
      +	out.element_blockquote do
      +	  comment_data = field.comment
      +	  output_doccomment_blocktag(out, comment_data[0])
      +	  if comment_has_field_additional_info?(comment_data)
      +	    out.element_dl("class"=>"field_additional_info") do
      +	      if comment_has_seealso?(comment_data)
      +		document_seealso(out, comment_data)
      +	      end
      +	    end
      +	  end
      +	end
      +      end
      +    end
      +  end
      +
      +  def method_detail_list(out, type)
      +    out.element_div("class"=>"method_detail_list") do
      +      out.element_h2("Method Detail")
      +      count = 0
      +      type.each_method do |method|
      +	next unless document_member?(method)
      +	document_method(out, method, count%2==0)
      +	count += 1
      +      end
      +    end
      +  end
      +
      +  def document_method(out, method, alt_row=false)
      +    css_class = "method_details"
      +    css_class << " alt_row" if alt_row
      +    out.element_div("class"=>css_class) do
      +      out.element_a("name"=>"method_#{method.name}")
      +      out.element_h3(method.name)
      +      method_synopsis(out, method)
      +      if method.comment
      +	out.element_blockquote do
      +	  comment_data = method.comment
      +	  out.element_p do
      +	    output_doccomment_blocktag(out, comment_data[0])
      +	  end
      +	  if method_additional_info?(method, comment_data)
      +	    out.element_dl("class"=>"method_additional_info") do
      +	      # TODO: assumes that params named in docs match formal arguments
      +	      #       should really filter out those that don't match before this
      +	      #       test
      +	      if comment_has_params?(comment_data)
      +		document_parameters(out, method.arguments, comment_data)
      +	      end
      +	      if comment_has_return?(comment_data)
      +		document_return(out, comment_data)
      +	      end
      +	      if comment_has_exceptions?(comment_data)
      +		document_exceptions(out, comment_data)
      +	      end
      +	      if method.containing_type.is_a?(ASClass)
      +		spec_method = method.specified_by
      +		unless spec_method.nil?
      +		  document_specified_by(out, spec_method)
      +		end
      +	      end
      +	      if comment_has_seealso?(comment_data)
      +		document_seealso(out, comment_data)
      +	      end
      +	    end
      +	  end
      +	end
      +      else
      +	if method.containing_type.is_a?(ASClass)
      +	  spec_method = method.specified_by
      +	  unless spec_method.nil?
      +	    out.element_blockquote do
      +	      out.element_dl("class"=>"method_additional_info") do
      +		document_specified_by(out, spec_method)
      +	      end
      +	    end
      +	  end
      +	end
      +      end
      +    end
      +  end
      +
      +  def type_hierachy(out, type)
      +    # TODO: ASCII art is an accessability problem.  Replace with images that
      +    #       have alt-text, or use CSS to generate content, e.g.
      +    #          <span class="inherit_relation" title="inherited by"></span>
      +    out.element_pre("class"=>"type_hierachy") do
      +      count = 0
      +      unless type.extends.nil?
      +	count = type_hierachy_recursive(out, type.extends)
      +      end
      +      if count > 0
      +	out.pcdata("   " * count)
      +	out.pcdata("+--")
      +      end
      +      out.element_strong(type.qualified_name)
      +    end
      +  end
      +
      +  def type_hierachy_recursive(out, type_proxy)
      +    count = 0
      +    if type_proxy.resolved?
      +      type = type_proxy.resolved_type
      +      unless type.extends.nil?
      +	count = type_hierachy_recursive(out, type.extends)
      +      end
      +    else
      +      out.pcdata("????\n")
      +      count = 1
      +    end
      +    if count > 0
      +      out.pcdata("   " * count)
      +      out.pcdata("+--")
      +    end
      +    link_type_proxy(out, type_proxy, true)
      +    out.pcdata("\n")
      +    return count + 1
      +  end
      +
      +  def document_parameters(out, arguments, comment_data)
      +    out.element_dt("Parameters")
      +    out.element_dd do
      +      out.element_table("class"=>"arguments", "summary"=>"") do
      +	arguments.each do |arg|
      +	  desc = comment_find_param(comment_data, arg.name)
      +	  if desc
      +	    out.element_tr do
      +	      out.element_td do
      +		out.element_code(arg.name)
      +	      end
      +	      out.element_td do
      +		output_doccomment_blocktag(out, desc)
      +	      end
      +	    end
      +	  end
      +	end
      +      end
      +    end
      +  end
      +
      +  def document_return(out, comment_data)
      +    out.element_dt("Return")
      +    out.element_dd do
      +      return_comment = comment_find_return(comment_data)
      +      out.element_p do
      +	output_doccomment_blocktag(out, return_comment)
      +      end
      +    end
      +  end
      +
      +  def document_exceptions(out, comment_data)
      +    out.element_dt("Throws")
      +    out.element_dd do
      +      out.element_table("class"=>"exceptions", "summary"=>"") do
      +	comment_each_exception(comment_data) do |exception_comment|
      +	  out.element_tr do
      +	    out.element_td do
      +	      link_type_proxy(out, exception_comment.exception_type)
      +	    end
      +	    out.element_td do
      +	      output_doccomment_blocktag(out, exception_comment)
      +	    end
      +	  end
      +	end
      +      end
      +    end
      +  end
      +
      +  def document_seealso(out, comment_data)
      +    out.element_dt("See Also")
      +    out.element_dd do
      +      comment_each_seealso(comment_data) do |see_comment|
      +	out.element_p do
      +	  output_doccomment_blocktag(out, see_comment)
      +	end
      +      end
      +    end
      +  end
      +
      +  def document_specified_by(out, method)
      +    out.element_dt("Specified By")
      +    out.element_dd do
      +      link_method(out, method)
      +      out.pcdata(" in ")
      +      link_type(out, method.containing_type, true)
      +    end
      +  end
      +
      +  def method_additional_info?(method, comment_data)
      +    if method.containing_type.is_a?(ASClass)
      +      spec_method = method.specified_by
      +    else
      +      spec_method = nil
      +    end
      +    return comment_has_method_additional_info?(comment_data) || !spec_method.nil?
      +  end
      +
      +  def output_doccomment_blocktag(out, block)
      +    block.each_inline do |inline|
      +      output_doccomment_inlinetag(out, inline)
      +    end
      +  end
      +
      +  def output_doccomment_inlinetag(out, inline)
      +    if inline.is_a?(String)
      +      out.pcdata(inline)
      +    elsif inline.is_a?(LinkTag)
      +      link_type_proxy(out, inline.target)
      +    else
      +      out.element_em(inline.inspect)
      +    end
      +  end
      +
      +  def method_synopsis(out, method)
      +    out.element_code("class"=>"method_synopsis") do
      +      if method.access.is_static
      +	out.pcdata("static ")
      +      end
      +      unless method.access.visibility.nil?
      +	out.pcdata("#{method.access.visibility.body} ")
      +      end
      +      out.pcdata("function ")
      +      out.element_strong("class"=>"method_name") do
      +	out.pcdata(method.name)
      +      end
      +      out.pcdata("(")
      +      method.arguments.each_with_index do |arg, index|
      +	out.pcdata(", ") if index > 0
      +	out.pcdata(arg.name)
      +	if arg.arg_type
      +	  out.pcdata(":")
      +	  link_type_proxy(out, arg.arg_type)
      +	end
      +      end
      +      out.pcdata(")")
      +      if method.return_type
      +	out.pcdata(":")
      +	link_type_proxy(out, method.return_type)
      +      end
      +    end
      +  end
      +
      +  def field_synopsis(out, field)
      +    out.element_code("class"=>"field_synopsis") do
      +      if field.instance_of?(ASImplicitField)
      +	implicit_field_synopsis(out, field)
      +      else
      +	explicit_field_synopsis(out, field)
      +      end
      +    end
      +  end
      +
      +  def explicit_field_synopsis(out, field)
      +    if field.access.is_static
      +      out.pcdata("static ")
      +    end
      +    unless field.access.visibility.nil?
      +      out.pcdata("#{field.access.visibility.body} ")
      +    end
      +    out.element_strong("class"=>"field_name") do
      +      out.pcdata(field.name)
      +    end
      +    if field.field_type
      +      out.pcdata(":")
      +      link_type_proxy(out, field.field_type)
      +    end
      +  end
      +
      +  def implicit_field_synopsis(out, field)
      +    if field.access.is_static
      +      out.pcdata("static ")
      +    end
      +    unless field.access.visibility.nil?
      +      out.pcdata("#{field.access.visibility.body} ")
      +    end
      +    out.element_strong("class"=>"field_name") do
      +      out.pcdata(field.name)
      +    end
      +    field_type = field.field_type
      +    unless field_type.nil?
      +      out.pcdata(":")
      +      link_type_proxy(out, field_type)
      +    end
      +    unless field.readwrite?
      +      out.pcdata(" ")
      +      out.element_em("class"=>"read_write_only") do
      +	if field.read?
      +	  out.pcdata("[Read Only]")
      +	else
      +	  out.pcdata("[Write Only]")
      +	end
      +      end
      +    end
      +  end
      +
      +
      +  # TODO: All these comment_*() methods obviously want to belong to some new
      +  #       class, as yet unwritten.
      +
      +  def comment_each_block_of_type(comment_data, type)
      +    comment_data.each_block do |block|
      +      yield block if block.is_a?(type)
      +    end
      +  end
      +
      +  def comment_has_blocktype?(comment_data, type)
      +    comment_each_block_of_type(comment_data, type) do |block|
      +      return true
      +    end
      +    return false
      +  end
      +
      +  def comment_has_params?(comment_data)
      +    return comment_has_blocktype?(comment_data, ParamBlockTag)
      +  end
      +
      +  def comment_has_exceptions?(comment_data)
      +    return comment_has_blocktype?(comment_data, ThrowsBlockTag)
      +  end
      +
      +  def comment_has_seealso?(comment_data)
      +    return comment_has_blocktype?(comment_data, SeeBlockTag)
      +  end
      +
      +  def comment_has_return?(comment_data)
      +    return comment_has_blocktype?(comment_data, ReturnBlockTag)
      +  end
      +
      +  # Does the method comment include any info in addition to any basic
      +  # description block?
      +  def comment_has_method_additional_info?(comment_data)
      +    return comment_has_params?(comment_data) ||
      +	   comment_has_return?(comment_data) ||
      +	   comment_has_exceptions?(comment_data) ||
      +	   comment_has_seealso?(comment_data)
      +  end
      +
      +  # Does the field comment include any info in addition to any basic description
      +  # block?
      +  def comment_has_field_additional_info?(comment_data)
      +    return comment_has_seealso?(comment_data)
      +  end
      +
      +  def comment_each_exception(comment_data)
      +    comment_data.each_block do |block|
      +      yield block if block.is_a?(ThrowsBlockTag)
      +    end
      +  end
      +
      +  def comment_each_seealso(comment_data)
      +    comment_each_block_of_type(comment_data, SeeBlockTag) do |block|
      +      yield block
      +    end
      +  end
      +
      +  def comment_find_param(comment_data, param_name)
      +    comment_each_block_of_type(comment_data, ParamBlockTag) do |block|
      +      return block if block.param_name == param_name
      +    end
      +    return nil
      +  end
      +
      +  def comment_find_return(comment_data)
      +    comment_each_block_of_type(comment_data, ReturnBlockTag) do |block|
      +      return block
      +    end
      +    return nil
      +  end
      +
      
       end
       
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 22:35:01 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 22:35:01 +0000 Subject: [as2api-dev] [CVS trunk] Create superclasses for pages, and hoist common code, simplifying subclasses, Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+120-10199 -> 100
      Create superclasses for pages, and hoist common code, simplifying subclasses,
      and producing a more declarative structure.
      

      trunk/as2api
      html_output.rb 99 -> 100
      --- trunk/as2api/html_output.rb	2005-06-07 17:40:24 UTC (rev 99)
      +++ trunk/as2api/html_output.rb	2005-06-07 22:34:59 UTC (rev 100)
      @@ -88,11 +88,45 @@
      
         end
       end
       
      
      -def html_file(name, title, doctype=:strict, encoding=nil)
      -  write_file("#{name}.html") do |io|
      -    out = XHTMLWriter.new(XMLWriter.new(io))
      -    encoding = "iso-8859-1" if encoding.nil?
      -    out.pi("xml version=\"1.0\" encoding=\"#{encoding}\"")
      
      +def create_page(page)
      +  write_file("#{page.base_name}.html") do |io|
      +    page.generate(XMLWriter.new(io))
      +  end
      +end
      +
      +def document_member?(member)
      +  !member.access.private?
      +end
      +
      +
      +# accessability; make a link to skip over the (navigation) elements produced
      +# by the given block
      +def skip_nav(out)
      +  out.element_div do
      +    out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
      +  end
      +  yield
      +  out.element_div do
      +    out.element_a("", {"name"=>"skip_nav"})
      +  end
      +end
      +
      +PROJECT_PAGE = "http://www.badgers-in-foil.co.uk/projects/as2api/"
      +
      +class Page
      +  def initialize(base_name)
      +    @base_name = base_name
      +    @encoding = "iso-8859-1"
      +    @doctype = :strict
      +    @title = nil
      +  end
      +
      +  attr_accessor :base_name, :encoding, :doctype, :title
      +
      +
      +  def generate(xml_writer)
      +    out = XHTMLWriter.new(xml_writer)
      +    out.pi("xml version=\"1.0\" encoding=\"#{encoding}\"") unless encoding.nil?
      
           case doctype
           # FIXME: push this code down into XHTMLWriter, and have it switch the
           # allowed elements depending on the value passed at construction
      
      @@ -112,67 +146,55 @@
      
             raise "unhandled doctype #{doctype.inspect}"
           end
           out.element_html do
      
      -      out.element_head do
      -        out.element_title(title)
      -        out.element_link("rel"=>"stylesheet",
      -	                 "type"=>"text/css",
      -	                 "href"=>base_path("style.css"))
      -        out.element_meta("name"=>"generator", "content"=>"http://www.badgers-in-foil.co.uk/projects/as2api/")
      -      end
      -      yield out
      
      +      generate_head(out)
      +      generate_content(out)
      
           end
         end
      
      -end
      
       
      
      -def html_body(name, title, doctype=:strict, encoding=nil)
      -  html_file(name, title, doctype, encoding) do |out|
      -    out.element_body do
      -      yield out
      -      footer(out)
      
      +  def generate_head(out)
      +    out.element_head do
      +      out.element_title(title) unless title.nil?
      +      out.element_link("rel"=>"stylesheet",
      +		       "type"=>"text/css",
      +		       "href"=>base_path("style.css"))
      +      out.element_meta("name"=>"generator", "content"=>PROJECT_PAGE)
      
           end
         end
       end
       
      
      -def footer(out)
      -  out.element_div("class"=>"footer") do
      -    out.element_a("as2api", {"href"=>"http://www.badgers-in-foil.co.uk/projects/as2api/", "title"=>"ActionScript 2 API Documentation Generator"})
      
      +class BasicPage < Page
      +  def generate_content(out)
      +    out.element_body do
      +      skip_nav(out) do
      +	navigation(out)
      +      end
      +      generate_body_content(out)
      +      navigation(out)
      +      generate_footer(out)
      +    end
      
         end
      
      -end
      
       
      
      -def document_member?(member)
      -  !member.access.private?
      -end
      -
      -
      -# accessability; make a link to skip over the (navigation) elements produced
      -# by the given block
      -def skip_nav(out)
      -  out.element_div do
      -    out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
      
      +  def generate_footer(out)
      +    out.element_div("class"=>"footer") do
      +      out.element_a("as2api", {"href"=>PROJECT_PAGE, "title"=>"ActionScript 2 API Documentation Generator"})
      +    end
      
         end
      
      -  yield
      -  out.element_div do
      -    out.element_a("", {"name"=>"skip_nav"})
      -  end
      
       end
       
      
      +class TypePage < BasicPage
      
       
      
      -class TypePage
      -
      
         def initialize(type)
      
      +    super(type.unqualified_name)
      
           @type = type
      
      +    if @type.source_utf8
      +      @encoding = "utf-8"
      +    else
      +      @encoding = "iso-8859-1"
      +    end
      +    @title = type.qualified_name
      
         end
       
      
      -  def generate
      -    encoding = if @type.source_utf8
      -      "utf-8"
      -    else
      -      "iso-8859-1"
      -    end
      -    html_body(@type.unqualified_name, @type.qualified_name, :strict, encoding) do |out|
      -      skip_nav(out) do
      -	navigation(out)
      -      end
      
      +  def generate_body_content(out)
      
             if @type.instance_of?(ASClass)
       	out.element_h1("Class "+@type.qualified_name)
             elsif @type.instance_of?(ASInterface)
      
      @@ -221,9 +243,6 @@
      
             constructor_detail(out, @type) if @type.constructor? && document_member?(@type.constructor)
             field_detail_list(out, @type) if @type.fields?
             method_detail_list(out, @type) if @type.methods?
      
      -
      -      navigation(out)
      -    end
      
         end
       
         def navigation(out)
      
      @@ -735,23 +754,21 @@
      
       
       def package_pages(package)
         in_subdir(package_dir_for(package)) do
      
      -    PackageIndexPage.new(package).generate
      -    PackageFramePage.new(package).generate
      
      +    create_page(PackageIndexPage.new(package))
      +    create_page(PackageFramePage.new(package))
      
         end
       end
       
       
      
      -class PackageIndexPage
      
      +class PackageIndexPage < BasicPage
      
       
         def initialize(package)
      
      +    super("package-summary")
      
           @package = package
      
      +    @title = "Package #{package_display_name_for(@package)} API Documentation"
      
         end
       
      
      -  def generate
      -    html_body("package-summary", "Package #{package_display_name_for(@package)} API Documentation") do |out|
      -      skip_nav(out) do
      -	navigation(out)
      -      end
      
      +  def generate_body_content(out)
      
             out.element_h1("Package "+package_display_name_for(@package))
             interfaces = @package.interfaces
             unless interfaces.empty?
      
      @@ -793,8 +810,6 @@
      
       	  end
       	end
             end
      
      -      navigation(out)
      -    end
      
         end
       
         def navigation(out)
      
      @@ -809,14 +824,16 @@
      
       end
       
       
      
      -class PackageFramePage
      
      +class PackageFramePage < Page
      
       
         def initialize(package)
      
      +    super("package-frame")
      
           @package = package
      
      +    @title = "Package #{package_display_name_for(@package)} API Naviation"
      +    @doctype = :transitional
      
         end
       
      
      -  def generate
      -    html_file("package-frame", "Package #{package_display_name_for(@package)} API Naviation", :transitional) do |out|
      
      +  def generate_content(out)
      
             out.element_body do
       	out.element_p do
       	  out.element_a(package_display_name_for(@package), {"href"=>"package-summary.html", "target"=>"type_frame"})
      
      @@ -848,21 +865,18 @@
      
       	  end
       	end
             end
      
      -    end
      
         end
       
       end
       
      
      -class OverviewPage
      
      +class OverviewPage < BasicPage
      
         def initialize(type_agregator)
      
      +    super("overview-summary")
      
           @type_agregator = type_agregator
      
      +    @title = "API Overview"
      
         end
       
      
      -  def generate
      -    html_body("overview-summary", "API Overview") do |out|
      -      skip_nav(out) do
      -	navigation(out)
      -      end
      
      +  def generate_body_content(out)
      
             out.element_h1("API Overview")
             out.element_table("class"=>"summary_list", "summary"=>"") do
       	out.element_tr do
      
      @@ -882,8 +896,6 @@
      
       	  end
       	end
             end
      
      -      navigation(out)
      -    end
      
         end
       
         def navigation(out)
      
      @@ -898,14 +910,16 @@
      
       end
       
       
      
      -class OverviewFramePage
      
      +class OverviewFramePage < Page
      
       
         def initialize(type_agregator)
      
      +    super("overview-frame")
      
           @type_agregator = type_agregator
      
      +    @title = "API Overview"
      +    @doctype = :transitional
      
         end
       
      
      -  def generate
      -    html_file("overview-frame", "API Overview", :transitional) do |out|
      
      +  def generate_content(out)
      
             out.element_body do
       	out.element_h3("Packages")
       	out.element_ul("class"=>"navigation_list") do
      
      @@ -924,7 +938,6 @@
      
       	  end
       	end
             end
      
      -    end
      
         end
       
       end
      
      @@ -944,14 +957,16 @@
      
       end
       
       
      
      -class AllTypesFramePage
      
      +class AllTypesFramePage < Page
      
       
         def initialize(type_agregator)
      
      +    super("all-types-frame")
      
           @type_agregator = type_agregator
      
      +    @title = "as2api"
      +    @doctype = :transitional
      
         end
       
      
      -  def generate
      -    html_file("all-types-frame", "as2api", :transitional) do |out|
      
      +  def generate_content(out)
      
             out.element_body do
       	out.element_h3("All Types")
       	out.element_ul("class"=>"navigation_list") do
      
      @@ -973,14 +988,20 @@
      
       	  end
       	end
             end
      
      -    end
      
         end
       
       end
       
       
      
      -def frameset
      -  html_file("frameset", "as2api", :frameset) do |out|
      
      +class FramesetPage < Page
      +
      +  def initialize
      +    super("frameset")
      +    @title = "as2api"
      +    @doctype = :frameset
      +  end
      +
      +  def generate_content(out)
      
           out.element_frameset("cols"=>"20%,80%") do
             out.element_frameset("rows"=>"30%,70%") do
       	out.element_frame("src"=>"overview-frame.html",
      
      @@ -1058,9 +1079,11 @@
      
         end
       end
       
      
      -class IndexPage
      
      +class IndexPage < BasicPage
      
         def initialize(type_agregator)
      
      +    super("index")
      
           @type_agregator = type_agregator
      
      +    @title = "Alphabetical Index"
      
         end
       
         def create_index()
      
      @@ -1087,18 +1110,12 @@
      
           index.sort!
         end
       
      
      -  def generate
      
      +  def generate_body_content(out)
      
           index = create_index()
       
      
      -    in_subdir("index-files") do
      -      html_body("index", "Alphabetical Index") do |out|
      -	navigation(out)
      -	index.each do |element|
      -	  out.element_p do
      -	    element.link(out)
      -	  end
      -	end
      -	navigation(out)
      
      +    index.each do |element|
      +      out.element_p do
      +	element.link(out)
      
             end
           end
         end
      
      @@ -1116,11 +1133,11 @@
      
       
       def document_types(output_path, type_agregator)
         in_subdir(output_path) do
      
      -    frameset()
      -    OverviewPage.new(type_agregator).generate
      -    OverviewFramePage.new(type_agregator).generate
      
      +    create_page(FramesetPage.new)
      +    create_page(OverviewPage.new(type_agregator))
      +    create_page(OverviewFramePage.new(type_agregator))
      
           package_list(type_agregator)
      
      -    AllTypesFramePage.new(type_agregator).generate
      
      +    create_page(AllTypesFramePage.new(type_agregator))
      
       
           # packages..
           type_agregator.each_package do |package|
      
      @@ -1131,12 +1148,14 @@
      
           type_agregator.each_type do |type|
             if type.document?
       	in_subdir(type.package_name.gsub(/\./, "/")) do
      
      -	  TypePage.new(type).generate
      
      +	  create_page(TypePage.new(type))
      
       	end
             end
           end
       
      
      -    IndexPage.new(type_agregator).generate
      
      +    in_subdir("index-files") do
      +      create_page(IndexPage.new(type_agregator))
      +    end
      
         end
       end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 22:36:46 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 22:36:46 +0000 Subject: [as2api-dev] [CVS trunk] Zap function that's now unused Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb-7100 -> 101
      Zap function that's now unused
      

      trunk/as2api
      html_output.rb 100 -> 101
      --- trunk/as2api/html_output.rb	2005-06-07 22:34:59 UTC (rev 100)
      +++ trunk/as2api/html_output.rb	2005-06-07 22:36:45 UTC (rev 101)
      @@ -731,13 +731,6 @@
      
       end
       
       
      
      -def list_see_also(out, docs)
      -  docs.each_see_also do |see|
      -    out.comment(" parsing for see-also not done yet ")
      -    out.element_p(see)
      -  end
      -end
      -
      
       def package_dir_for(package)
         package.name.gsub(/\./, "/")
       end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 22:41:08 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 22:41:08 +0000 Subject: [as2api-dev] [CVS trunk] Inline this simple function; so calls to create_page() are all in the same place Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+4-7101 -> 102
      Inline this simple function; so calls to create_page() are all in the same place
      

      trunk/as2api
      html_output.rb 101 -> 102
      --- trunk/as2api/html_output.rb	2005-06-07 22:36:45 UTC (rev 101)
      +++ trunk/as2api/html_output.rb	2005-06-07 22:41:07 UTC (rev 102)
      @@ -745,12 +745,6 @@
      
         package_dir_for(package) + "/" + page
       end
       
      
      -def package_pages(package)
      -  in_subdir(package_dir_for(package)) do
      -    create_page(PackageIndexPage.new(package))
      -    create_page(PackageFramePage.new(package))
      -  end
      -end
      
       
       
       class PackageIndexPage < BasicPage
      
      @@ -1134,7 +1128,10 @@
      
       
           # packages..
           type_agregator.each_package do |package|
      
      -      package_pages(package)
      
      +      in_subdir(package_dir_for(package)) do
      +	create_page(PackageIndexPage.new(package))
      +	create_page(PackageFramePage.new(package))
      +      end
      
           end
       
           # types..
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 22:42:30 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 22:42:30 +0000 Subject: [as2api-dev] [CVS trunk] Move function definition adjacent to its only user. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+4-4102 -> 103
      Move function definition adjacent to its only user.
      

      trunk/as2api
      html_output.rb 102 -> 103
      --- trunk/as2api/html_output.rb	2005-06-07 22:41:07 UTC (rev 102)
      +++ trunk/as2api/html_output.rb	2005-06-07 22:42:29 UTC (rev 103)
      @@ -44,6 +44,10 @@
      
       end
       
       
      
      +def link_for_method(method)
      +  return "#{link_for_type(method.containing_type)}#method_#{method.name}"
      +end
      +
      
       def link_method(out, method)
         out.element_a("href"=>link_for_method(method)) do
           out.pcdata(method.name)
      
      @@ -1043,10 +1047,6 @@
      
         end
       end
       
      
      -def link_for_method(method)
      -  return "#{link_for_type(method.containing_type)}#method_#{method.name}"
      -end
      -
      
       class MethodIndexTerm < MemberIndexTerm
         def link(out)
           link_method(out, @asmember)
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 22:49:56 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 22:49:56 +0000 Subject: [as2api-dev] [CVS trunk] Fix frameset XHTML b0rkage (a change of Rostislav's that I missed before) Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+5-3103 -> 104
      Fix frameset XHTML b0rkage (a change of Rostislav's that I missed before)
      

      trunk/as2api
      html_output.rb 103 -> 104
      --- trunk/as2api/html_output.rb	2005-06-07 22:42:29 UTC (rev 103)
      +++ trunk/as2api/html_output.rb	2005-06-07 22:49:55 UTC (rev 104)
      @@ -1005,10 +1005,12 @@
      
             out.element_frame("src"=>"overview-summary.html",
                               "name"=>"type_frame",
                               "title"=>"Package and type descriptions")
      
      +      out.element_noframes do
      +	out.element_body do
      +	    out.element_a("Non-frameset overview page", {"href"=>"overview-summary.html"})
      +	end
      +      end
      
           end
      
      -    out.element_noframes do
      -      out.element_a("Non-frameset overview page", {"href"=>"overview-summary.html"})
      -    end
      
         end
       end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 23:16:26 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 23:16:26 +0000 Subject: [as2api-dev] [CVS trunk] Have each Page's path be an inherent property, rather than external context Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+42-42104 -> 105
      Have each Page's path be an inherent property, rather than external context
      

      trunk/as2api
      html_output.rb 104 -> 105
      --- trunk/as2api/html_output.rb	2005-06-07 22:49:55 UTC (rev 104)
      +++ trunk/as2api/html_output.rb	2005-06-07 23:16:24 UTC (rev 105)
      @@ -93,8 +93,10 @@
      
       end
       
       def create_page(page)
      
      -  write_file("#{page.base_name}.html") do |io|
      -    page.generate(XMLWriter.new(io))
      
      +  in_subdir(page.path_name) do
      +    write_file("#{page.base_name}.html") do |io|
      +      page.generate(XMLWriter.new(io))
      +    end
      
         end
       end
       
      
      @@ -118,14 +120,15 @@
      
       PROJECT_PAGE = "http://www.badgers-in-foil.co.uk/projects/as2api/"
       
       class Page
      
      -  def initialize(base_name)
      
      +  def initialize(path_name, base_name)
      +    @path_name = path_name
      
           @base_name = base_name
           @encoding = "iso-8859-1"
           @doctype = :strict
           @title = nil
         end
       
      
      -  attr_accessor :base_name, :encoding, :doctype, :title
      
      +  attr_accessor :path_name, :base_name, :encoding, :doctype, :title
      
       
       
         def generate(xml_writer)
      
      @@ -187,8 +190,8 @@
      
       
       class TypePage < BasicPage
       
      
      -  def initialize(type)
      -    super(type.unqualified_name)
      
      +  def initialize(path_name, type)
      +    super(path_name, type.unqualified_name)
      
           @type = type
           if @type.source_utf8
             @encoding = "utf-8"
      
      @@ -753,8 +756,8 @@
      
       
       class PackageIndexPage < BasicPage
       
      
      -  def initialize(package)
      -    super("package-summary")
      
      +  def initialize(path_name, package)
      +    super(path_name, "package-summary")
      
           @package = package
           @title = "Package #{package_display_name_for(@package)} API Documentation"
         end
      
      @@ -817,8 +820,8 @@
      
       
       class PackageFramePage < Page
       
      
      -  def initialize(package)
      -    super("package-frame")
      
      +  def initialize(path_name, package)
      +    super(path_name, "package-frame")
      
           @package = package
           @title = "Package #{package_display_name_for(@package)} API Naviation"
           @doctype = :transitional
      
      @@ -861,8 +864,8 @@
      
       end
       
       class OverviewPage < BasicPage
      
      -  def initialize(type_agregator)
      -    super("overview-summary")
      
      +  def initialize(path_name, type_agregator)
      +    super(path_name, "overview-summary")
      
           @type_agregator = type_agregator
           @title = "API Overview"
         end
      
      @@ -903,8 +906,8 @@
      
       
       class OverviewFramePage < Page
       
      
      -  def initialize(type_agregator)
      -    super("overview-frame")
      
      +  def initialize(path_name, type_agregator)
      +    super(path_name, "overview-frame")
      
           @type_agregator = type_agregator
           @title = "API Overview"
           @doctype = :transitional
      
      @@ -934,15 +937,17 @@
      
       end
       
       
      
      -def package_list(type_agregator)
      
      +def package_list(path_name, type_agregator)
      
         # REVISIT: Will a package list actually be useful for ActionScript, or can
         #          we always assume that any code that makes reference to a type
         #          must have access to that type's source in order to compile?
         #          (In theory, this file will allow javadoc to link to ActionScript
         #          classes, so maybe keep it just for that.)
      
      -  write_file("package-list") do |out|
      -    type_agregator.each_package do |package|
      -      out.puts(package.name) unless package.name == ""
      
      +  in_subdir(path_name) do
      +    write_file("package-list") do |out|
      +      type_agregator.each_package do |package|
      +	out.puts(package.name) unless package.name == ""
      +      end
      
           end
         end
       end
      
      @@ -950,8 +955,8 @@
      
       
       class AllTypesFramePage < Page
       
      
      -  def initialize(type_agregator)
      -    super("all-types-frame")
      
      +  def initialize(path_name, type_agregator)
      +    super(path_name, "all-types-frame")
      
           @type_agregator = type_agregator
           @title = "as2api"
           @doctype = :transitional
      
      @@ -986,8 +991,8 @@
      
       
       class FramesetPage < Page
       
      
      -  def initialize
      -    super("frameset")
      
      +  def initialize(path_name)
      +    super(path_name, "frameset")
      
           @title = "as2api"
           @doctype = :frameset
         end
      
      @@ -1007,7 +1012,7 @@
      
                               "title"=>"Package and type descriptions")
             out.element_noframes do
       	out.element_body do
      
      -	    out.element_a("Non-frameset overview page", {"href"=>"overview-summary.html"})
      
      +	  out.element_a("Non-frameset overview page", {"href"=>"overview-summary.html"})
      
       	end
             end
           end
      
      @@ -1069,8 +1074,8 @@
      
       end
       
       class IndexPage < BasicPage
      
      -  def initialize(type_agregator)
      -    super("index")
      
      +  def initialize(path_name, type_agregator)
      +    super(path_name, "index")
      
           @type_agregator = type_agregator
           @title = "Alphabetical Index"
         end
      
      @@ -1121,34 +1126,29 @@
      
       end
       
       def document_types(output_path, type_agregator)
      
      -  in_subdir(output_path) do
      -    create_page(FramesetPage.new)
      -    create_page(OverviewPage.new(type_agregator))
      -    create_page(OverviewFramePage.new(type_agregator))
      -    package_list(type_agregator)
      -    create_page(AllTypesFramePage.new(type_agregator))
      
      +    create_page(FramesetPage.new(output_path))
      +    create_page(OverviewPage.new(output_path, type_agregator))
      +    create_page(OverviewFramePage.new(output_path, type_agregator))
      +    package_list(output_path, type_agregator)
      +    create_page(AllTypesFramePage.new(output_path, type_agregator))
      
       
           # packages..
           type_agregator.each_package do |package|
      
      -      in_subdir(package_dir_for(package)) do
      -	create_page(PackageIndexPage.new(package))
      -	create_page(PackageFramePage.new(package))
      -      end
      
      +      dir = File.join(output_path, package_dir_for(package))
      +      create_page(PackageIndexPage.new(dir, package))
      +      create_page(PackageFramePage.new(dir, package))
      
           end
       
           # types..
           type_agregator.each_type do |type|
             if type.document?
      
      -	in_subdir(type.package_name.gsub(/\./, "/")) do
      -	  create_page(TypePage.new(type))
      -	end
      
      +	dir = File.join(output_path, type.package_name.gsub(/\./, "/"))
      +	create_page(TypePage.new(dir, type))
      
             end
           end
       
      
      -    in_subdir("index-files") do
      -      create_page(IndexPage.new(type_agregator))
      -    end
      -  end
      
      +    dir = File.join(output_path, "index-files")
      +    create_page(IndexPage.new(dir, type_agregator))
      
       end
       
       # vim:softtabstop=2:shiftwidth=2
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 23:27:34 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 23:27:34 +0000 Subject: [as2api-dev] [CVS trunk] Factor out lots of calls to create_page(). Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+35-20105 -> 106
      Factor out lots of calls to create_page().
      
      By putting all the Page objects into an Array, we could do better progress
      reporting, eventually.
      

      trunk/as2api
      html_output.rb 105 -> 106
      --- trunk/as2api/html_output.rb	2005-06-07 23:16:24 UTC (rev 105)
      +++ trunk/as2api/html_output.rb	2005-06-07 23:27:33 UTC (rev 106)
      @@ -1125,31 +1125,46 @@
      
       
       end
       
      
      -def document_types(output_path, type_agregator)
      -    create_page(FramesetPage.new(output_path))
      -    create_page(OverviewPage.new(output_path, type_agregator))
      -    create_page(OverviewFramePage.new(output_path, type_agregator))
      -    package_list(output_path, type_agregator)
      -    create_page(AllTypesFramePage.new(output_path, type_agregator))
      
      +def make_page_list(output_path, type_agregator)
      +  list = []
      
       
      
      -    # packages..
      -    type_agregator.each_package do |package|
      -      dir = File.join(output_path, package_dir_for(package))
      -      create_page(PackageIndexPage.new(dir, package))
      -      create_page(PackageFramePage.new(dir, package))
      -    end
      
      +  list << FramesetPage.new(output_path)
      +  list << OverviewPage.new(output_path, type_agregator)
      +  list << OverviewFramePage.new(output_path, type_agregator)
      +  list << AllTypesFramePage.new(output_path, type_agregator)
      
       
      
      -    # types..
      -    type_agregator.each_type do |type|
      -      if type.document?
      -	dir = File.join(output_path, type.package_name.gsub(/\./, "/"))
      -	create_page(TypePage.new(dir, type))
      -      end
      
      +  # packages..
      +  type_agregator.each_package do |package|
      +    dir = File.join(output_path, package_dir_for(package))
      +    list << PackageIndexPage.new(dir, package)
      +    list << PackageFramePage.new(dir, package)
      +  end
      +
      +  # types..
      +  type_agregator.each_type do |type|
      +    if type.document?
      +      dir = File.join(output_path, type.package_name.gsub(/\./, "/"))
      +      list << TypePage.new(dir, type)
      
           end
      
      +  end
      
       
      
      -    dir = File.join(output_path, "index-files")
      -    create_page(IndexPage.new(dir, type_agregator))
      
      +  dir = File.join(output_path, "index-files")
      +  list << IndexPage.new(dir, type_agregator)
      +
      +  list
      
       end
       
      
      +def create_all_pages(list)
      +  list.each do |page|
      +    create_page(page)
      +  end
      +end
      +
      +def document_types(output_path, type_agregator)
      +  list = make_page_list(output_path, type_agregator)
      +  create_all_pages(list)
      +  package_list(output_path, type_agregator)
      +end
      +
      
       # vim:softtabstop=2:shiftwidth=2
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 7 23:36:42 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 07 Jun 2005 23:36:42 +0000 Subject: [as2api-dev] [CVS trunk] Missed link_type_proxy() when promoting functions to methods of TypePage. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+16-16106 -> 107
      Missed link_type_proxy() when promoting functions to methods of TypePage.
      

      trunk/as2api
      html_output.rb 106 -> 107
      --- trunk/as2api/html_output.rb	2005-06-07 23:27:33 UTC (rev 106)
      +++ trunk/as2api/html_output.rb	2005-06-07 23:36:41 UTC (rev 107)
      @@ -3,22 +3,6 @@
      
       require 'xhtmlwriter'
       require 'doc_comment'
       
      
      -def link_type_proxy(out, type_proxy, qualified=false)
      -  if type_proxy.resolved? && type_proxy.resolved_type.document?
      -    link_type(out, type_proxy.resolved_type, qualified)
      -  else
      -    if type_proxy.resolved?
      -      if type_proxy.resolved_type.instance_of?(ASInterface)
      -        out.element_span(type_proxy.local_name, {"class"=>"interface_name"})
      -      else
      -        out.element_span(type_proxy.local_name, {"class"=>"class_name"})
      -      end
      -    else
      -      out.element_span(type_proxy.local_name, {"class"=>"unresolved_type_name"})
      -    end
      -  end
      -end
      -
      
       def link_for_type(type)
         base_path(type.qualified_name.gsub(/\./, "/")+".html")
       end
      
      @@ -661,7 +645,23 @@
      
           end
         end
       
      
      +  def link_type_proxy(out, type_proxy, qualified=false)
      +    if type_proxy.resolved? && type_proxy.resolved_type.document?
      +      link_type(out, type_proxy.resolved_type, qualified)
      +    else
      +      if type_proxy.resolved?
      +	if type_proxy.resolved_type.instance_of?(ASInterface)
      +	  out.element_span(type_proxy.local_name, {"class"=>"interface_name"})
      +	else
      +	  out.element_span(type_proxy.local_name, {"class"=>"class_name"})
      +	end
      +      else
      +	out.element_span(type_proxy.local_name, {"class"=>"unresolved_type_name"})
      +      end
      +    end
      +  end
      
       
      
      +
      
         # TODO: All these comment_*() methods obviously want to belong to some new
         #       class, as yet unwritten.
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 8 00:10:57 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 08 Jun 2005 00:10:57 +0000 Subject: [as2api-dev] [CVS trunk] Turn XHTMLWriter from a class into a mixin-module, and include this in Page Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+326-323107 -> 108
      xhtmlwriter.rb+2-5107 -> 108
      +328-328
      2 modified files
      Turn XHTMLWriter from a class into a mixin-module, and include this in Page
      directly.  Also, change the name prefix on XHTML-generating methods from
      element_ to html_, which is shorter and a little more clear (I think).
      
      All this results in slightly simpler code for generating html in Page
      and its subclasses.  i.e. code that used to read,
      
        out.element_td do
          out.element_a("hello", {"href"=>"index.html"})
        end
      
      now reads,
      
        html_td do
          html_a("hello", {"href"=>"index.html"})
        end
      

      trunk/as2api
      html_output.rb 107 -> 108
      --- trunk/as2api/html_output.rb	2005-06-07 23:36:41 UTC (rev 107)
      +++ trunk/as2api/html_output.rb	2005-06-08 00:10:56 UTC (rev 108)
      @@ -17,11 +17,11 @@
      
           attr_title = "Class #{type.qualified_name}"
         end
         if qualified
      
      -    out.element_a(type.qualified_name, {"href"=>href,
      
      +    out.html_a(type.qualified_name, {"href"=>href,
      
                                               "class"=>attr_class,
                                               "title"=>attr_title})
         else
      
      -    out.element_a(type.unqualified_name, {"href"=>href,
      
      +    out.html_a(type.unqualified_name, {"href"=>href,
      
                                                 "class"=>attr_class,
                                                 "title"=>attr_title})
         end
      
      @@ -33,7 +33,7 @@
      
       end
       
       def link_method(out, method)
      
      -  out.element_a("href"=>link_for_method(method)) do
      
      +  out.html_a("href"=>link_for_method(method)) do
      
           out.pcdata(method.name)
           out.pcdata("()")
         end
      
      @@ -92,82 +92,85 @@
      
       # accessability; make a link to skip over the (navigation) elements produced
       # by the given block
       def skip_nav(out)
      
      -  out.element_div do
      -    out.element_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
      
      +  out.html_div do
      +    out.html_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
      
         end
         yield
      
      -  out.element_div do
      -    out.element_a("", {"name"=>"skip_nav"})
      
      +  out.html_div do
      +    out.html_a("", {"name"=>"skip_nav"})
      
         end
       end
       
       PROJECT_PAGE = "http://www.badgers-in-foil.co.uk/projects/as2api/"
       
       class Page
      
      +  include XHTMLWriter
      +
      
         def initialize(path_name, base_name)
           @path_name = path_name
           @base_name = base_name
           @encoding = "iso-8859-1"
      
      -    @doctype = :strict
      
      +    @doctype_id = :strict
      
           @title = nil
      
      +    @io = nil  # to be set during the lifetime of generate() call
      
         end
       
      
      -  attr_accessor :path_name, :base_name, :encoding, :doctype, :title
      
      +  attr_accessor :path_name, :base_name, :encoding, :doctype_id, :title
      
       
       
         def generate(xml_writer)
      
      -    out = XHTMLWriter.new(xml_writer)
      -    out.pi("xml version=\"1.0\" encoding=\"#{encoding}\"") unless encoding.nil?
      -    case doctype
      
      +    @io = xml_writer
      +    pi("xml version=\"1.0\" encoding=\"#{encoding}\"") unless encoding.nil?
      +    case doctype_id
      
           # FIXME: push this code down into XHTMLWriter, and have it switch the
           # allowed elements depending on the value passed at construction
           when :strict
      
      -      out.doctype("html", "PUBLIC",
      -                  "-//W3C//DTD XHTML 1.0 Strict//EN",
      -		  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")
      
      +      doctype("html", "PUBLIC",
      +              "-//W3C//DTD XHTML 1.0 Strict//EN",
      +	      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")
      
           when :transitional
      
      -      out.doctype("html", "PUBLIC",
      -                  "-//W3C//DTD XHTML 1.0 Transitionalt//EN",
      -		  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd")
      
      +      doctype("html", "PUBLIC",
      +              "-//W3C//DTD XHTML 1.0 Transitionalt//EN",
      +	      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd")
      
           when :frameset
      
      -      out.doctype("html", "PUBLIC",
      -                  "-//W3C//DTD XHTML 1.0 Frameset//EN",
      -		  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd")
      
      +      doctype("html", "PUBLIC",
      +              "-//W3C//DTD XHTML 1.0 Frameset//EN",
      +	      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd")
      
           else
      
      -      raise "unhandled doctype #{doctype.inspect}"
      
      +      raise "unhandled doctype #{doctype_id.inspect}"
      
           end
      
      -    out.element_html do
      -      generate_head(out)
      -      generate_content(out)
      
      +    html_html do
      +      generate_head
      +      generate_content
      
           end
         end
       
      
      -  def generate_head(out)
      -    out.element_head do
      -      out.element_title(title) unless title.nil?
      -      out.element_link("rel"=>"stylesheet",
      
      +  def generate_head
      +    html_head do
      +      html_title(title) unless title.nil?
      +      html_link("rel"=>"stylesheet",
      
       		       "type"=>"text/css",
       		       "href"=>base_path("style.css"))
      
      -      out.element_meta("name"=>"generator", "content"=>PROJECT_PAGE)
      
      +      html_meta("name"=>"generator", "content"=>PROJECT_PAGE)
      
           end
         end
       end
       
       class BasicPage < Page
      
      -  def generate_content(out)
      -    out.element_body do
      -      skip_nav(out) do
      -	navigation(out)
      
      +  def generate_content
      +    html_body do
      +      skip_nav(self) do
      +	navigation
      
             end
      
      -      generate_body_content(out)
      -      navigation(out)
      -      generate_footer(out)
      
      +      generate_body_content
      +      navigation
      +      generate_footer
      
           end
         end
       
      
      -  def generate_footer(out)
      -    out.element_div("class"=>"footer") do
      -      out.element_a("as2api", {"href"=>PROJECT_PAGE, "title"=>"ActionScript 2 API Documentation Generator"})
      
      +  def generate_footer
      +    html_div("class"=>"footer") do
      +      html_a("as2api", {"href"=>PROJECT_PAGE, "title"=>"ActionScript 2 API Documentation Generator"})
      
           end
         end
       end
      
      @@ -185,42 +188,42 @@
      
           @title = type.qualified_name
         end
       
      
      -  def generate_body_content(out)
      
      +  def generate_body_content
      
             if @type.instance_of?(ASClass)
      
      -	out.element_h1("Class "+@type.qualified_name)
      
      +	html_h1("Class "+@type.qualified_name)
      
             elsif @type.instance_of?(ASInterface)
      
      -	out.element_h1("Interface "+@type.qualified_name)
      
      +	html_h1("Interface "+@type.qualified_name)
      
             end
       
      
      -      type_hierachy(out, @type)
      
      +      type_hierachy(@type)
      
       
             if @type.implements_interfaces?
      
      -	out.element_div("class"=>"interfaces") do
      -	  out.element_h2("Implemented Interfaces")
      
      +	html_div("class"=>"interfaces") do
      +	  html_h2("Implemented Interfaces")
      
       	  @type.each_interface do |interface|
       	    # TODO: need to resolve interface name, make links
      
      -	    out.element_code do
      -	      link_type_proxy(out, interface)
      
      +	    html_code do
      +	      link_type_proxy(interface)
      
       	    end
      
      -	    out.pcdata(" ")
      
      +	    pcdata(" ")
      
       	  end
       	end
             end
      
      -      out.element_div("class"=>"type_description") do
      
      +      html_div("class"=>"type_description") do
      
       	if @type.comment
       	  comment_data = @type.comment
       
      
      -	  out.element_h2("Description")
      -	  out.element_p do
      -	    output_doccomment_blocktag(out, comment_data[0])
      
      +	  html_h2("Description")
      +	  html_p do
      +	    output_doccomment_blocktag(comment_data[0])
      
       	  end
      
      -	  out.element_dl("class"=>"type_details") do
      
      +	  html_dl("class"=>"type_details") do
      
       	    if comment_has_seealso?(comment_data)
      
      -	      out.element_dt("See Also")
      -	      out.element_dd do
      
      +	      html_dt("See Also")
      +	      html_dd do
      
       		comment_each_seealso(comment_data) do |see_comment|
      
      -		  out.element_p do
      -		    output_doccomment_blocktag(out, see_comment)
      
      +		  html_p do
      +		    output_doccomment_blocktag(see_comment)
      
       		  end
       		end
       	      end
      
      @@ -229,36 +232,36 @@
      
       	end
             end
             
      
      -      field_index_list(out, @type) if @type.fields?
      -      method_index_list(out, @type) if @type.methods?
      -      constructor_detail(out, @type) if @type.constructor? && document_member?(@type.constructor)
      -      field_detail_list(out, @type) if @type.fields?
      -      method_detail_list(out, @type) if @type.methods?
      
      +      field_index_list(@type) if @type.fields?
      +      method_index_list(@type) if @type.methods?
      +      constructor_detail(@type) if @type.constructor? && document_member?(@type.constructor)
      +      field_detail_list(@type) if @type.fields?
      +      method_detail_list(@type) if @type.methods?
      
         end
       
      
      -  def navigation(out)
      -    out.element_div("class"=>"main_nav") do
      -      out.element_a("Overview", {"href"=>base_path("overview-summary.html")})
      -      out.element_a("Package", {"href"=>"package-summary.html"})
      -      out.element_span("Class", {"class"=>"nav_current"})
      -      out.element_a("Index", {"href"=>base_path("index-files/index.html")})
      
      +  def navigation
      +    html_div("class"=>"main_nav") do
      +      html_a("Overview", {"href"=>base_path("overview-summary.html")})
      +      html_a("Package", {"href"=>"package-summary.html"})
      +      html_span("Class", {"class"=>"nav_current"})
      +      html_a("Index", {"href"=>base_path("index-files/index.html")})
      
           end
         end
       
      
      -  def field_index_list(out, type)
      -    out.element_div("class"=>"field_index") do
      -      out.element_h2("Field Index")
      -      list_fields(out, type)
      
      +  def field_index_list(type)
      +    html_div("class"=>"field_index") do
      +      html_h2("Field Index")
      +      list_fields(type)
      
             if type.has_ancestor?
      
      -	out.element_dl do
      
      +	html_dl do
      
       	  type.each_ancestor do |type|
       	    if type.fields?
      
      -	      out.element_dt do
      -		out.pcdata("Inherited from ")
      -		link_type(out, type)
      
      +	      html_dt do
      +		pcdata("Inherited from ")
      +		link_type(type)
      
       	      end
      
      -	      out.element_dd do
      -		list_fields(out, type, link_for_type(type))
      
      +	      html_dd do
      +		list_fields(type, link_for_type(type))
      
       	      end
       	    end
       	  end
      
      @@ -267,46 +270,46 @@
      
           end
         end
       
      
      -  def list_fields(out, type, href_prefix="")
      
      +  def list_fields(type, href_prefix="")
      
           fields = type.fields.sort
           index = 0
           fields.each do |field|
             next unless document_member?(field)
      
      -      out.pcdata(", ") if index > 0
      -      out.element_code do
      -	out.element_a("href"=>"#{href_prefix}#field_#{field.name}") do
      -	  out.pcdata(field.name)
      
      +      pcdata(", ") if index > 0
      +      html_code do
      +	html_a("href"=>"#{href_prefix}#field_#{field.name}") do
      +	  pcdata(field.name)
      
       	end
             end
             index += 1
           end
         end
       
      
      -  def method_index_list(out, type)
      -    out.element_div("class"=>"method_index") do
      -      out.element_h2("Method Index")
      
      +  def method_index_list(type)
      +    html_div("class"=>"method_index") do
      +      html_h2("Method Index")
      
             if type.constructor? && document_member?(type.constructor)
      
      -	out.element_p do
      -	  out.element_code do
      -	    out.pcdata("new ")
      -	      out.element_a("href"=>"#method_#{type.constructor.name}") do
      -		out.pcdata(type.constructor.name+"()")
      
      +	html_p do
      +	  html_code do
      +	    pcdata("new ")
      +	      html_a("href"=>"#method_#{type.constructor.name}") do
      +		pcdata(type.constructor.name+"()")
      
       	      end
       	  end
       	end
             end
             known_method_names = []
      
      -      list_methods(out, type, known_method_names)
      
      +      list_methods(type, known_method_names)
      
             if type.has_ancestor?
      
      -	out.element_dl do
      
      +	html_dl do
      
       	  type.each_ancestor do |type|
       	    if type.methods?
      
      -	      out.element_dt do
      -		out.pcdata("Inherited from ")
      -		link_type(out, type)
      
      +	      html_dt do
      +		pcdata("Inherited from ")
      +		link_type(self, type)
      
       	      end
      
      -	      out.element_dd do
      -		list_methods(out, type, known_method_names, link_for_type(type))
      
      +	      html_dd do
      +		list_methods(type, known_method_names, link_for_type(type))
      
       	      end
       	    end
       	  end
      
      @@ -315,49 +318,49 @@
      
           end
         end
       
      
      -  def list_methods(out, type, known_method_names, href_prefix="")
      
      +  def list_methods(type, known_method_names, href_prefix="")
      
           methods = type.methods.select do |method|
             !known_method_names.include?(method.name) && document_member?(method)
           end
           methods.sort!
           methods.each_with_index do |method, index|
             known_method_names << method.name
      
      -      out.pcdata(", ") if index > 0
      -      out.element_a("href"=>"#{href_prefix}#method_#{method.name}") do
      -	out.pcdata(method.name+"()")
      
      +      pcdata(", ") if index > 0
      +      html_a("href"=>"#{href_prefix}#method_#{method.name}") do
      +	pcdata(method.name+"()")
      
             end
           end
         end
       
      
      -  def constructor_detail(out, type)
      -    out.element_div("class"=>"constructor_detail_list") do
      -      out.element_h2("Constructor Detail")
      -      document_method(out, type.constructor)
      
      +  def constructor_detail(type)
      +    html_div("class"=>"constructor_detail_list") do
      +      html_h2("Constructor Detail")
      +      document_method(type.constructor)
      
           end
         end
       
      
      -  def field_detail_list(out, type)
      -    out.element_div("class"=>"field_detail_list") do
      -      out.element_h2("Field Detail")
      
      +  def field_detail_list(type)
      +    html_div("class"=>"field_detail_list") do
      +      html_h2("Field Detail")
      
             type.each_field do |field|
      
      -	document_field(out, field) if document_member?(field)
      
      +	document_field(field) if document_member?(field)
      
             end
           end
         end
       
      
      -  def document_field(out, field)
      -    out.element_a("name"=>"field_#{field.name}")
      -    out.element_h3(field.name)
      -    out.element_div("class"=>"field_details") do
      -      field_synopsis(out, field)
      
      +  def document_field(field)
      +    html_a("name"=>"field_#{field.name}")
      +    html_h3(field.name)
      +    html_div("class"=>"field_details") do
      +      field_synopsis(field)
      
             if field.comment
      
      -	out.element_blockquote do
      
      +	html_blockquote do
      
       	  comment_data = field.comment
      
      -	  output_doccomment_blocktag(out, comment_data[0])
      
      +	  output_doccomment_blocktag(comment_data[0])
      
       	  if comment_has_field_additional_info?(comment_data)
      
      -	    out.element_dl("class"=>"field_additional_info") do
      
      +	    html_dl("class"=>"field_additional_info") do
      
       	      if comment_has_seealso?(comment_data)
      
      -		document_seealso(out, comment_data)
      
      +		document_seealso(comment_data)
      
       	      end
       	    end
       	  end
      
      @@ -366,53 +369,53 @@
      
           end
         end
       
      
      -  def method_detail_list(out, type)
      -    out.element_div("class"=>"method_detail_list") do
      -      out.element_h2("Method Detail")
      
      +  def method_detail_list(type)
      +    html_div("class"=>"method_detail_list") do
      +      html_h2("Method Detail")
      
             count = 0
             type.each_method do |method|
       	next unless document_member?(method)
      
      -	document_method(out, method, count%2==0)
      
      +	document_method(method, count%2==0)
      
       	count += 1
             end
           end
         end
       
      
      -  def document_method(out, method, alt_row=false)
      
      +  def document_method(method, alt_row=false)
      
           css_class = "method_details"
           css_class << " alt_row" if alt_row
      
      -    out.element_div("class"=>css_class) do
      -      out.element_a("name"=>"method_#{method.name}")
      -      out.element_h3(method.name)
      -      method_synopsis(out, method)
      
      +    html_div("class"=>css_class) do
      +      html_a("name"=>"method_#{method.name}")
      +      html_h3(method.name)
      +      method_synopsis(method)
      
             if method.comment
      
      -	out.element_blockquote do
      
      +	html_blockquote do
      
       	  comment_data = method.comment
      
      -	  out.element_p do
      -	    output_doccomment_blocktag(out, comment_data[0])
      
      +	  html_p do
      +	    output_doccomment_blocktag(comment_data[0])
      
       	  end
       	  if method_additional_info?(method, comment_data)
      
      -	    out.element_dl("class"=>"method_additional_info") do
      
      +	    html_dl("class"=>"method_additional_info") do
      
       	      # TODO: assumes that params named in docs match formal arguments
       	      #       should really filter out those that don't match before this
       	      #       test
       	      if comment_has_params?(comment_data)
      
      -		document_parameters(out, method.arguments, comment_data)
      
      +		document_parameters(method.arguments, comment_data)
      
       	      end
       	      if comment_has_return?(comment_data)
      
      -		document_return(out, comment_data)
      
      +		document_return(comment_data)
      
       	      end
       	      if comment_has_exceptions?(comment_data)
      
      -		document_exceptions(out, comment_data)
      
      +		document_exceptions(comment_data)
      
       	      end
       	      if method.containing_type.is_a?(ASClass)
       		spec_method = method.specified_by
       		unless spec_method.nil?
      
      -		  document_specified_by(out, spec_method)
      
      +		  document_specified_by(spec_method)
      
       		end
       	      end
       	      if comment_has_seealso?(comment_data)
      
      -		document_seealso(out, comment_data)
      
      +		document_seealso(comment_data)
      
       	      end
       	    end
       	  end
      
      @@ -421,9 +424,9 @@
      
       	if method.containing_type.is_a?(ASClass)
       	  spec_method = method.specified_by
       	  unless spec_method.nil?
      
      -	    out.element_blockquote do
      -	      out.element_dl("class"=>"method_additional_info") do
      -		document_specified_by(out, spec_method)
      
      +	    html_blockquote do
      +	      html_dl("class"=>"method_additional_info") do
      +		document_specified_by(spec_method)
      
       	      end
       	    end
       	  end
      
      @@ -432,56 +435,56 @@
      
           end
         end
       
      
      -  def type_hierachy(out, type)
      
      +  def type_hierachy(type)
      
           # TODO: ASCII art is an accessability problem.  Replace with images that
           #       have alt-text, or use CSS to generate content, e.g.
           #          <span class="inherit_relation" title="inherited by"></span>
      
      -    out.element_pre("class"=>"type_hierachy") do
      
      +    html_pre("class"=>"type_hierachy") do
      
             count = 0
             unless type.extends.nil?
      
      -	count = type_hierachy_recursive(out, type.extends)
      
      +	count = type_hierachy_recursive(type.extends)
      
             end
             if count > 0
      
      -	out.pcdata("   " * count)
      -	out.pcdata("+--")
      
      +	pcdata("   " * count)
      +	pcdata("+--")
      
             end
      
      -      out.element_strong(type.qualified_name)
      
      +      html_strong(type.qualified_name)
      
           end
         end
       
      
      -  def type_hierachy_recursive(out, type_proxy)
      
      +  def type_hierachy_recursive(type_proxy)
      
           count = 0
           if type_proxy.resolved?
             type = type_proxy.resolved_type
             unless type.extends.nil?
      
      -	count = type_hierachy_recursive(out, type.extends)
      
      +	count = type_hierachy_recursive(type.extends)
      
             end
           else
      
      -      out.pcdata("????\n")
      
      +      pcdata("????\n")
      
             count = 1
           end
           if count > 0
      
      -      out.pcdata("   " * count)
      -      out.pcdata("+--")
      
      +      pcdata("   " * count)
      +      pcdata("+--")
      
           end
      
      -    link_type_proxy(out, type_proxy, true)
      -    out.pcdata("\n")
      
      +    link_type_proxy(type_proxy, true)
      +    pcdata("\n")
      
           return count + 1
         end
       
      
      -  def document_parameters(out, arguments, comment_data)
      -    out.element_dt("Parameters")
      -    out.element_dd do
      -      out.element_table("class"=>"arguments", "summary"=>"") do
      
      +  def document_parameters(arguments, comment_data)
      +    html_dt("Parameters")
      +    html_dd do
      +      html_table("class"=>"arguments", "summary"=>"") do
      
       	arguments.each do |arg|
       	  desc = comment_find_param(comment_data, arg.name)
       	  if desc
      
      -	    out.element_tr do
      -	      out.element_td do
      -		out.element_code(arg.name)
      
      +	    html_tr do
      +	      html_td do
      +		html_code(arg.name)
      
       	      end
      
      -	      out.element_td do
      -		output_doccomment_blocktag(out, desc)
      
      +	      html_td do
      +		output_doccomment_blocktag(desc)
      
       	      end
       	    end
       	  end
      
      @@ -490,27 +493,27 @@
      
           end
         end
       
      
      -  def document_return(out, comment_data)
      -    out.element_dt("Return")
      -    out.element_dd do
      
      +  def document_return(comment_data)
      +    html_dt("Return")
      +    html_dd do
      
             return_comment = comment_find_return(comment_data)
      
      -      out.element_p do
      -	output_doccomment_blocktag(out, return_comment)
      
      +      html_p do
      +	output_doccomment_blocktag(return_comment)
      
             end
           end
         end
       
      
      -  def document_exceptions(out, comment_data)
      -    out.element_dt("Throws")
      -    out.element_dd do
      -      out.element_table("class"=>"exceptions", "summary"=>"") do
      
      +  def document_exceptions(comment_data)
      +    html_dt("Throws")
      +    html_dd do
      +      html_table("class"=>"exceptions", "summary"=>"") do
      
       	comment_each_exception(comment_data) do |exception_comment|
      
      -	  out.element_tr do
      -	    out.element_td do
      -	      link_type_proxy(out, exception_comment.exception_type)
      
      +	  html_tr do
      +	    html_td do
      +	      link_type_proxy(exception_comment.exception_type)
      
       	    end
      
      -	    out.element_td do
      -	      output_doccomment_blocktag(out, exception_comment)
      
      +	    html_td do
      +	      output_doccomment_blocktag(exception_comment)
      
       	    end
       	  end
       	end
      
      @@ -518,23 +521,23 @@
      
           end
         end
       
      
      -  def document_seealso(out, comment_data)
      -    out.element_dt("See Also")
      -    out.element_dd do
      
      +  def document_seealso(comment_data)
      +    html_dt("See Also")
      +    html_dd do
      
             comment_each_seealso(comment_data) do |see_comment|
      
      -	out.element_p do
      -	  output_doccomment_blocktag(out, see_comment)
      
      +	html_p do
      +	  output_doccomment_blocktag(see_comment)
      
       	end
             end
           end
         end
       
      
      -  def document_specified_by(out, method)
      -    out.element_dt("Specified By")
      -    out.element_dd do
      -      link_method(out, method)
      -      out.pcdata(" in ")
      -      link_type(out, method.containing_type, true)
      
      +  def document_specified_by(method)
      +    html_dt("Specified By")
      +    html_dd do
      +      link_method(self, method)
      +      pcdata(" in ")
      +      link_type(self, method.containing_type, true)
      
           end
         end
       
      
      @@ -547,116 +550,116 @@
      
           return comment_has_method_additional_info?(comment_data) || !spec_method.nil?
         end
       
      
      -  def output_doccomment_blocktag(out, block)
      
      +  def output_doccomment_blocktag(block)
      
           block.each_inline do |inline|
      
      -      output_doccomment_inlinetag(out, inline)
      
      +      output_doccomment_inlinetag(inline)
      
           end
         end
       
      
      -  def output_doccomment_inlinetag(out, inline)
      
      +  def output_doccomment_inlinetag(inline)
      
           if inline.is_a?(String)
      
      -      out.pcdata(inline)
      
      +      pcdata(inline)
      
           elsif inline.is_a?(LinkTag)
      
      -      link_type_proxy(out, inline.target)
      
      +      link_type_proxy(inline.target)
      
           else
      
      -      out.element_em(inline.inspect)
      
      +      html_em(inline.inspect)
      
           end
         end
       
      
      -  def method_synopsis(out, method)
      -    out.element_code("class"=>"method_synopsis") do
      
      +  def method_synopsis(method)
      +    html_code("class"=>"method_synopsis") do
      
             if method.access.is_static
      
      -	out.pcdata("static ")
      
      +	pcdata("static ")
      
             end
             unless method.access.visibility.nil?
      
      -	out.pcdata("#{method.access.visibility.body} ")
      
      +	pcdata("#{method.access.visibility.body} ")
      
             end
      
      -      out.pcdata("function ")
      -      out.element_strong("class"=>"method_name") do
      -	out.pcdata(method.name)
      
      +      pcdata("function ")
      +      html_strong("class"=>"method_name") do
      +	pcdata(method.name)
      
             end
      
      -      out.pcdata("(")
      
      +      pcdata("(")
      
             method.arguments.each_with_index do |arg, index|
      
      -	out.pcdata(", ") if index > 0
      -	out.pcdata(arg.name)
      
      +	pcdata(", ") if index > 0
      +	pcdata(arg.name)
      
       	if arg.arg_type
      
      -	  out.pcdata(":")
      -	  link_type_proxy(out, arg.arg_type)
      
      +	  pcdata(":")
      +	  link_type_proxy(arg.arg_type)
      
       	end
             end
      
      -      out.pcdata(")")
      
      +      pcdata(")")
      
             if method.return_type
      
      -	out.pcdata(":")
      -	link_type_proxy(out, method.return_type)
      
      +	pcdata(":")
      +	link_type_proxy(method.return_type)
      
             end
           end
         end
       
      
      -  def field_synopsis(out, field)
      -    out.element_code("class"=>"field_synopsis") do
      
      +  def field_synopsis(field)
      +    html_code("class"=>"field_synopsis") do
      
             if field.instance_of?(ASImplicitField)
      
      -	implicit_field_synopsis(out, field)
      
      +	implicit_field_synopsis(field)
      
             else
      
      -	explicit_field_synopsis(out, field)
      
      +	explicit_field_synopsis(field)
      
             end
           end
         end
       
      
      -  def explicit_field_synopsis(out, field)
      
      +  def explicit_field_synopsis(field)
      
           if field.access.is_static
      
      -      out.pcdata("static ")
      
      +      pcdata("static ")
      
           end
           unless field.access.visibility.nil?
      
      -      out.pcdata("#{field.access.visibility.body} ")
      
      +      pcdata("#{field.access.visibility.body} ")
      
           end
      
      -    out.element_strong("class"=>"field_name") do
      -      out.pcdata(field.name)
      
      +    html_strong("class"=>"field_name") do
      +      pcdata(field.name)
      
           end
           if field.field_type
      
      -      out.pcdata(":")
      -      link_type_proxy(out, field.field_type)
      
      +      pcdata(":")
      +      link_type_proxy(field.field_type)
      
           end
         end
       
      
      -  def implicit_field_synopsis(out, field)
      
      +  def implicit_field_synopsis(field)
      
           if field.access.is_static
      
      -      out.pcdata("static ")
      
      +      pcdata("static ")
      
           end
           unless field.access.visibility.nil?
      
      -      out.pcdata("#{field.access.visibility.body} ")
      
      +      pcdata("#{field.access.visibility.body} ")
      
           end
      
      -    out.element_strong("class"=>"field_name") do
      -      out.pcdata(field.name)
      
      +    html_strong("class"=>"field_name") do
      +      pcdata(field.name)
      
           end
           field_type = field.field_type
           unless field_type.nil?
      
      -      out.pcdata(":")
      -      link_type_proxy(out, field_type)
      
      +      pcdata(":")
      +      link_type_proxy(field_type)
      
           end
           unless field.readwrite?
      
      -      out.pcdata(" ")
      -      out.element_em("class"=>"read_write_only") do
      
      +      pcdata(" ")
      +      html_em("class"=>"read_write_only") do
      
       	if field.read?
      
      -	  out.pcdata("[Read Only]")
      
      +	  pcdata("[Read Only]")
      
       	else
      
      -	  out.pcdata("[Write Only]")
      
      +	  pcdata("[Write Only]")
      
       	end
             end
           end
         end
       
      
      -  def link_type_proxy(out, type_proxy, qualified=false)
      
      +  def link_type_proxy(type_proxy, qualified=false)
      
           if type_proxy.resolved? && type_proxy.resolved_type.document?
      
      -      link_type(out, type_proxy.resolved_type, qualified)
      
      +      link_type(self, type_proxy.resolved_type, qualified)
      
           else
             if type_proxy.resolved?
       	if type_proxy.resolved_type.instance_of?(ASInterface)
      
      -	  out.element_span(type_proxy.local_name, {"class"=>"interface_name"})
      
      +	  html_span(type_proxy.local_name, {"class"=>"interface_name"})
      
       	else
      
      -	  out.element_span(type_proxy.local_name, {"class"=>"class_name"})
      
      +	  html_span(type_proxy.local_name, {"class"=>"class_name"})
      
       	end
             else
      
      -	out.element_span(type_proxy.local_name, {"class"=>"unresolved_type_name"})
      
      +	html_span(type_proxy.local_name, {"class"=>"unresolved_type_name"})
      
             end
           end
         end
      
      @@ -762,22 +765,22 @@
      
           @title = "Package #{package_display_name_for(@package)} API Documentation"
         end
       
      
      -  def generate_body_content(out)
      -      out.element_h1("Package "+package_display_name_for(@package))
      
      +  def generate_body_content
      +      html_h1("Package "+package_display_name_for(@package))
      
             interfaces = @package.interfaces
             unless interfaces.empty?
       	interfaces.sort!
      
      -	out.element_table("class"=>"summary_list", "summary"=>"") do
      -	  out.element_tr do
      -	    out.element_th("Interface Summary")
      
      +	html_table("class"=>"summary_list", "summary"=>"") do
      +	  html_tr do
      +	    html_th("Interface Summary")
      
       	  end
       	  interfaces.each do |type|
      
      -	    out.element_tr do
      
      +	    html_tr do
      
       	
      
      -	      out.element_td do
      -		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
      
      +	      html_td do
      +		html_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
      
       	      end
      
      -	      #out.element_td do
      
      +	      #html_td do
      
       		# TODO: package description
       	      #end
       	    end
      
      @@ -787,17 +790,17 @@
      
             classes = @package.classes
             unless classes.empty?
       	classes.sort!
      
      -	out.element_table("class"=>"summary_list", "summary"=>"") do
      -	  out.element_tr do
      -	    out.element_th("Class Summary")
      
      +	html_table("class"=>"summary_list", "summary"=>"") do
      +	  html_tr do
      +	    html_th("Class Summary")
      
       	  end
       	  classes.each do |type|
      
      -	    out.element_tr do
      
      +	    html_tr do
      
       	
      
      -	      out.element_td do
      -		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
      
      +	      html_td do
      +		html_a(type.unqualified_name, {"href"=>type.unqualified_name+".html"})
      
       	      end
      
      -	      #out.element_td do
      
      +	      #html_td do
      
       		# TODO: package description
       	      #end
       	    end
      
      @@ -806,12 +809,12 @@
      
             end
         end
       
      
      -  def navigation(out)
      -    out.element_div("class"=>"main_nav") do
      -      out.element_a("Overview", {"href"=>base_path("overview-summary.html")})
      -      out.element_span("Package", {"class"=>"nav_current"})
      -      out.element_span("Class")
      -      out.element_a("Index", {"href"=>base_path("index-files/index.html")})
      
      +  def navigation
      +    html_div("class"=>"main_nav") do
      +      html_a("Overview", {"href"=>base_path("overview-summary.html")})
      +      html_span("Package", {"class"=>"nav_current"})
      +      html_span("Class")
      +      html_a("Index", {"href"=>base_path("index-files/index.html")})
      
           end
         end
       
      
      @@ -824,23 +827,23 @@
      
           super(path_name, "package-frame")
           @package = package
           @title = "Package #{package_display_name_for(@package)} API Naviation"
      
      -    @doctype = :transitional
      
      +    @doctype_id = :transitional
      
         end
       
      
      -  def generate_content(out)
      -      out.element_body do
      -	out.element_p do
      -	  out.element_a(package_display_name_for(@package), {"href"=>"package-summary.html", "target"=>"type_frame"})
      
      +  def generate_content
      +      html_body do
      +	html_p do
      +	  html_a(package_display_name_for(@package), {"href"=>"package-summary.html", "target"=>"type_frame"})
      
       	end
       	interfaces = @package.interfaces
       	unless interfaces.empty?
       	  interfaces.sort!
      
      -	  out.element_h3("Interfaces")
      -	  out.element_ul("class"=>"navigation_list") do
      
      +	  html_h3("Interfaces")
      +	  html_ul("class"=>"navigation_list") do
      
       	    interfaces.each do |type|
       	  
      
      -	      out.element_li do
      -		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      
      +	      html_li do
      +		html_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      
       	      end
       	    end
       	  end
      
      @@ -848,12 +851,12 @@
      
       	classes = @package.classes
       	unless classes.empty?
       	  classes.sort!
      
      -	  out.element_h3("Classes")
      -	  out.element_ul("class"=>"navigation_list") do
      
      +	  html_h3("Classes")
      +	  html_ul("class"=>"navigation_list") do
      
       	    classes.each do |type|
       	  
      
      -	      out.element_li do
      -		out.element_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      
      +	      html_li do
      +		html_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      
       	      end
       	    end
       	  end
      
      @@ -870,21 +873,21 @@
      
           @title = "API Overview"
         end
       
      
      -  def generate_body_content(out)
      -      out.element_h1("API Overview")
      -      out.element_table("class"=>"summary_list", "summary"=>"") do
      -	out.element_tr do
      -	  out.element_th("Packages")
      
      +  def generate_body_content
      +      html_h1("API Overview")
      +      html_table("class"=>"summary_list", "summary"=>"") do
      +	html_tr do
      +	  html_th("Packages")
      
       	end
       	packages = @type_agregator.packages.sort
       	packages.each do |package|
      
      -	  out.element_tr do
      
      +	  html_tr do
      
             
      
      -	    out.element_td do
      
      +	    html_td do
      
       	      name = package_display_name_for(package)
      
      -	      out.element_a(name, {"href"=>package_link_for(package, "package-summary.html")})
      
      +	      html_a(name, {"href"=>package_link_for(package, "package-summary.html")})
      
       	    end
      
      -	    #out.element_td do
      
      +	    #html_td do
      
       	      # TODO: package description
       	    #end
       	  end
      
      @@ -892,12 +895,12 @@
      
             end
         end
       
      
      -  def navigation(out)
      -    out.element_div("class"=>"main_nav") do
      -      out.element_span("Overview", {"class"=>"nav_current"})
      -      out.element_span("Package")
      -      out.element_span("Class")
      -      out.element_a("Index", {"href"=>"index-files/index.html"})
      
      +  def navigation
      +    html_div("class"=>"main_nav") do
      +      html_span("Overview", {"class"=>"nav_current"})
      +      html_span("Package")
      +      html_span("Class")
      +      html_a("Index", {"href"=>"index-files/index.html"})
      
           end
         end
       
      
      @@ -910,24 +913,24 @@
      
           super(path_name, "overview-frame")
           @type_agregator = type_agregator
           @title = "API Overview"
      
      -    @doctype = :transitional
      
      +    @doctype_id = :transitional
      
         end
       
      
      -  def generate_content(out)
      -      out.element_body do
      -	out.element_h3("Packages")
      -	out.element_ul("class"=>"navigation_list") do
      
      +  def generate_content
      
      [truncated at 1000 lines; 137 more skipped]

      trunk/as2api
      xhtmlwriter.rb 107 -> 108
      --- trunk/as2api/xhtmlwriter.rb	2005-06-07 23:36:41 UTC (rev 107)
      +++ trunk/as2api/xhtmlwriter.rb	2005-06-08 00:10:56 UTC (rev 108)
      @@ -1,7 +1,4 @@
      
      -class XHTMLWriter
      -  def initialize(io)
      -    @io = io
      -  end
      
      +module XHTMLWriter
      
       
         private
       
      
      @@ -95,7 +92,7 @@
      
       
         TAGS.each do |name|
           class_eval <<-HERE
      
      -      def element_#{name}(*args)
      
      +      def html_#{name}(*args)
      
       	if block_given?
       	  @io.element("#{name}", *args) { yield }
       	else
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 8 11:45:42 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 08 Jun 2005 11:45:42 +0000 Subject: [as2api-dev] [CVS trunk] Minor simplification Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+5-6108 -> 109
      Minor simplification
      

      trunk/as2api
      html_output.rb 108 -> 109
      --- trunk/as2api/html_output.rb	2005-06-08 00:10:56 UTC (rev 108)
      +++ trunk/as2api/html_output.rb	2005-06-08 11:45:38 UTC (rev 109)
      @@ -17,14 +17,13 @@
      
           attr_title = "Class #{type.qualified_name}"
         end
         if qualified
      
      -    out.html_a(type.qualified_name, {"href"=>href,
      -                                        "class"=>attr_class,
      -                                        "title"=>attr_title})
      
      +    content = type.qualified_name
      
         else
      
      -    out.html_a(type.unqualified_name, {"href"=>href,
      -                                          "class"=>attr_class,
      -                                          "title"=>attr_title})
      
      +    content = type.unqualified_name
      
         end
      
      +  out.html_a(content, {"href"=>href,
      +		       "class"=>attr_class,
      +		       "title"=>attr_title})
      
       end
       
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 8 21:23:13 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 08 Jun 2005 21:23:13 +0000 Subject: [as2api-dev] [CVS trunk] Gah! Why was the stylesheet never under version control? Message-ID:
      Commit in trunk/as2api on MAIN
      style.css+75added 110
      Gah!  Why was the stylesheet never under version control?
      

      trunk/as2api
      style.css added at 110
      --- trunk/as2api/style.css	2005-06-08 11:45:38 UTC (rev 109)
      +++ trunk/as2api/style.css	2005-06-08 21:23:10 UTC (rev 110)
      @@ -0,0 +1,75 @@
      
      +h1, h2, h3, th {
      +	font-family: sans-serif;
      +}
      +
      +h2 {
      +	background-color: #ccccff;
      +	padding-left: .2em;
      +	padding-right: .2em;
      +	-moz-border-radius: .2em;
      +}
      +
      +.method_details, .field_details {
      +	padding-bottom: .5em;
      +}
      +.alt_row {
      +	background-color: #eeeeee;
      +}
      +
      +.main_nav {
      +	background-color: #EEEEFF;
      +	padding: 4px;
      +}
      +.main_nav > * {
      +	font-family: sans-serif;
      +	font-weight: bolder;
      +	padding: 4px;
      +}
      +.nav_current {
      +	background-color: #00008B;
      +	color: #FFFFFF;
      +}
      +
      +table.summary_list {
      +	border-collapse: collapse;
      +	width: 100%;
      +	margin-bottom: 1em;
      +}
      +table.summary_list th {
      +	background-color: #CCCCFF;
      +	font-size: larger;
      +}
      +table.summary_list td, table.summary_list th {
      +	border: 2px solid grey;
      +	padding: .2em;
      +}
      +ul.navigation_list {
      +	padding-left: 0;
      +}
      +ul.navigation_list li {
      +	margin: 0 0 .4em 0;
      +	list-style: none;
      +}
      +
      +/*
      +.unresolved_type_name {
      +	background-color: red;
      +	color: white;
      +}
      +*/
      +
      +.interface_name {
      +	font-style: italic;
      +}
      +
      +.footer {
      +	text-align: center;
      +	font-size: smaller;
      +}
      +/*
      +.read_write_only {
      +}
      +*/
      +.diagram {
      +	text-align: center;
      +}
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 8 22:03:40 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 08 Jun 2005 22:03:40 +0000 Subject: [as2api-dev] [CVS trunk] Change nav bars from divs into unordered lists. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+52-20110 -> 111
      style.css+4-1110 -> 111
      +56-21
      2 modified files
      Change nav bars from divs into unordered lists.
      
      This achieves a number of useful things:
      
       - When there's no CSS, it stops AllTheTextRunningTogether due to the lack
         of whitespace between individual nav elements
      
       - Follows w3c guidelines suggesting that lists-of-stuff should be marked up
         using <ul>
      
       - Erm... all the cool kids are doing it
      
      Also, I think this should provide somewhere for Rostislav to hang his custom
      CSS.
      

      trunk/as2api
      html_output.rb 110 -> 111
      --- trunk/as2api/html_output.rb	2005-06-08 21:23:10 UTC (rev 110)
      +++ trunk/as2api/html_output.rb	2005-06-08 22:03:39 UTC (rev 111)
      @@ -239,11 +239,19 @@
      
         end
       
         def navigation
      
      -    html_div("class"=>"main_nav") do
      -      html_a("Overview", {"href"=>base_path("overview-summary.html")})
      -      html_a("Package", {"href"=>"package-summary.html"})
      -      html_span("Class", {"class"=>"nav_current"})
      -      html_a("Index", {"href"=>base_path("index-files/index.html")})
      
      +    html_ul("class"=>"main_nav") do
      +      html_li do
      +	html_a("Overview", {"href"=>base_path("overview-summary.html")})
      +      end
      +      html_li do
      +	html_a("Package", {"href"=>"package-summary.html"})
      +      end
      +      html_li do
      +	html_span("Class", {"class"=>"nav_current"})
      +      end
      +      html_li do
      +	html_a("Index", {"href"=>base_path("index-files/index.html")})
      +      end
      
           end
         end
       
      
      @@ -809,11 +817,19 @@
      
         end
       
         def navigation
      
      -    html_div("class"=>"main_nav") do
      -      html_a("Overview", {"href"=>base_path("overview-summary.html")})
      -      html_span("Package", {"class"=>"nav_current"})
      -      html_span("Class")
      -      html_a("Index", {"href"=>base_path("index-files/index.html")})
      
      +    html_ul("class"=>"main_nav") do
      +      html_li do
      +	html_a("Overview", {"href"=>base_path("overview-summary.html")})
      +      end
      +      html_li do
      +	html_span("Package", {"class"=>"nav_current"})
      +      end
      +      html_li do
      +	html_span("Class")
      +      end
      +      html_li do
      +	html_a("Index", {"href"=>base_path("index-files/index.html")})
      +      end
      
           end
         end
       
      
      @@ -895,11 +911,19 @@
      
         end
       
         def navigation
      
      -    html_div("class"=>"main_nav") do
      -      html_span("Overview", {"class"=>"nav_current"})
      -      html_span("Package")
      -      html_span("Class")
      -      html_a("Index", {"href"=>"index-files/index.html"})
      
      +    html_ul("class"=>"main_nav") do
      +      html_li do
      +	html_span("Overview", {"class"=>"nav_current"})
      +      end
      +      html_li do
      +	html_span("Package")
      +      end
      +      html_li do
      +	html_span("Class")
      +      end
      +      html_li do
      +	html_a("Index", {"href"=>"index-files/index.html"})
      +      end
      
           end
         end
       
      
      @@ -1117,11 +1141,19 @@
      
         end
       
         def navigation
      
      -    html_div("class"=>"main_nav") do
      -      html_a("Overview", {"href"=>base_path("overview-summary.html")})
      -      html_span("Package")
      -      html_span("Class")
      -      html_span("Index", {"class"=>"nav_current"})
      
      +    html_ul("class"=>"main_nav") do
      +      html_li do
      +	html_a("Overview", {"href"=>base_path("overview-summary.html")})
      +      end
      +      html_li do
      +	html_span("Package")
      +      end
      +      html_li do
      +	html_span("Class")
      +      end
      +      html_li do
      +	html_span("Index", {"class"=>"nav_current"})
      +      end
      
           end
         end
       
      

      trunk/as2api
      style.css 110 -> 111
      --- trunk/as2api/style.css	2005-06-08 21:23:10 UTC (rev 110)
      +++ trunk/as2api/style.css	2005-06-08 22:03:39 UTC (rev 111)
      @@ -20,9 +20,12 @@
      
       	background-color: #EEEEFF;
       	padding: 4px;
       }
      
      -.main_nav > * {
      
      +.main_nav li {
      
       	font-family: sans-serif;
       	font-weight: bolder;
      
      +	display: inline;
      +}
      +.main_nav li * {
      
       	padding: 4px;
       }
       .nav_current {
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 8 22:29:21 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 08 Jun 2005 22:29:21 +0000 Subject: [as2api-dev] [CVS trunk] Tweak presentation of argument/exception tables Message-ID:
      Commit in trunk/as2api on MAIN
      style.css+5111 -> 112
      Tweak presentation of argument/exception tables
      

      trunk/as2api
      style.css 111 -> 112
      --- trunk/as2api/style.css	2005-06-08 22:03:39 UTC (rev 111)
      +++ trunk/as2api/style.css	2005-06-08 22:29:21 UTC (rev 112)
      @@ -54,6 +54,11 @@
      
       	list-style: none;
       }
       
      
      +table.exceptions td, table.arguments td {
      +	vertical-align: text-top;
      +	padding: 0 1em .5em 0;
      +}
      +
      
       /*
       .unresolved_type_name {
       	background-color: red;
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 8 22:41:38 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 08 Jun 2005 22:41:38 +0000 Subject: [as2api-dev] [CVS trunk] Don't use blockquotes. Standard javadoc output does, presumably because the Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+3-3112 -> 113
      style.css+5112 -> 113
      +8-3
      2 modified files
      Don't use blockquotes.  Standard javadoc output does, presumably because the
      default styling typically indents this element's content.  We can do this
      indentation with CSS instead, and avoid semantic misuse of blockquote (as the
      content isn't really a quotation, in any sense that I can see).
      

      trunk/as2api
      html_output.rb 112 -> 113
      --- trunk/as2api/html_output.rb	2005-06-08 22:29:21 UTC (rev 112)
      +++ trunk/as2api/html_output.rb	2005-06-08 22:41:37 UTC (rev 113)
      @@ -361,7 +361,7 @@
      
           html_div("class"=>"field_details") do
             field_synopsis(field)
             if field.comment
      
      -	html_blockquote do
      
      +	html_div("class"=>"field_info") do
      
       	  comment_data = field.comment
       	  output_doccomment_blocktag(comment_data[0])
       	  if comment_has_field_additional_info?(comment_data)
      
      @@ -396,7 +396,7 @@
      
             html_h3(method.name)
             method_synopsis(method)
             if method.comment
      
      -	html_blockquote do
      
      +	html_div("class"=>"method_info") do
      
       	  comment_data = method.comment
       	  html_p do
       	    output_doccomment_blocktag(comment_data[0])
      
      @@ -431,7 +431,7 @@
      
       	if method.containing_type.is_a?(ASClass)
       	  spec_method = method.specified_by
       	  unless spec_method.nil?
      
      -	    html_blockquote do
      
      +	    html_div("class"=>"method_info") do
      
       	      html_dl("class"=>"method_additional_info") do
       		document_specified_by(spec_method)
       	      end
      

      trunk/as2api
      style.css 112 -> 113
      --- trunk/as2api/style.css	2005-06-08 22:29:21 UTC (rev 112)
      +++ trunk/as2api/style.css	2005-06-08 22:41:37 UTC (rev 113)
      @@ -12,6 +12,11 @@
      
       .method_details, .field_details {
       	padding-bottom: .5em;
       }
      
      +
      +.method_info, .field_info {
      +	padding-left: 3em;
      +}
      +
      
       .alt_row {
       	background-color: #eeeeee;
       }
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 8 23:35:32 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 08 Jun 2005 23:35:32 +0000 Subject: [as2api-dev] [CVS trunk]
      abuse must stop! Standard javadoc output uses definition lists simply Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+73-91113 -> 114
      style.css+10-1113 -> 114
      +83-92
      2 modified files
      <dl> abuse must stop!  Standard javadoc output uses definition lists simply
      to create titled sections, where section content gets some indentation.
      
      Stop copying this abuse of the dl.  Use proper heading tags, and CSS to
      indent the following content, following the visual style of javadoc.
      

      trunk/as2api
      html_output.rb 113 -> 114
      --- trunk/as2api/html_output.rb	2005-06-08 22:41:37 UTC (rev 113)
      +++ trunk/as2api/html_output.rb	2005-06-08 23:35:29 UTC (rev 114)
      @@ -216,14 +216,12 @@
      
       	  html_p do
       	    output_doccomment_blocktag(comment_data[0])
       	  end
      
      -	  html_dl("class"=>"type_details") do
      -	    if comment_has_seealso?(comment_data)
      -	      html_dt("See Also")
      -	      html_dd do
      -		comment_each_seealso(comment_data) do |see_comment|
      -		  html_p do
      -		    output_doccomment_blocktag(see_comment)
      -		  end
      
      +	  if comment_has_seealso?(comment_data)
      +	    html_h4("See Also")
      +	    html_ul("class"=>"extra_info") do
      +	      comment_each_seealso(comment_data) do |see_comment|
      +		html_li do
      +		  output_doccomment_blocktag(see_comment)
      
       		end
       	      end
       	    end
      
      @@ -260,17 +258,15 @@
      
             html_h2("Field Index")
             list_fields(type)
             if type.has_ancestor?
      
      -	html_dl do
      -	  type.each_ancestor do |type|
      -	    if type.fields?
      -	      html_dt do
      -		pcdata("Inherited from ")
      -		link_type(type)
      -	      end
      -	      html_dd do
      -		list_fields(type, link_for_type(type))
      -	      end
      
      +	type.each_ancestor do |type|
      +	  if type.fields?
      +	    html_h4 do
      +	      pcdata("Inherited from ")
      +	      link_type(type)
      
       	    end
      
      +	    html_p("class"=>"extra_info") do
      +	      list_fields(type, link_for_type(type))
      +	    end
      
       	  end
       	end
             end
      
      @@ -308,17 +304,15 @@
      
             known_method_names = []
             list_methods(type, known_method_names)
             if type.has_ancestor?
      
      -	html_dl do
      -	  type.each_ancestor do |type|
      -	    if type.methods?
      -	      html_dt do
      -		pcdata("Inherited from ")
      -		link_type(self, type)
      -	      end
      -	      html_dd do
      -		list_methods(type, known_method_names, link_for_type(type))
      -	      end
      
      +	type.each_ancestor do |type|
      +	  if type.methods?
      +	    html_h4 do
      +	      pcdata("Inherited from ")
      +	      link_type(self, type)
      
       	    end
      
      +	    html_p("class"=>"extra_infp") do
      +	      list_methods(type, known_method_names, link_for_type(type))
      +	    end
      
       	  end
       	end
             end
      
      @@ -365,10 +359,8 @@
      
       	  comment_data = field.comment
       	  output_doccomment_blocktag(comment_data[0])
       	  if comment_has_field_additional_info?(comment_data)
      
      -	    html_dl("class"=>"field_additional_info") do
      -	      if comment_has_seealso?(comment_data)
      -		document_seealso(comment_data)
      -	      end
      
      +	    if comment_has_seealso?(comment_data)
      +	      document_seealso(comment_data)
      
       	    end
       	  end
       	end
      
      @@ -402,29 +394,27 @@
      
       	    output_doccomment_blocktag(comment_data[0])
       	  end
       	  if method_additional_info?(method, comment_data)
      
      -	    html_dl("class"=>"method_additional_info") do
      -	      # TODO: assumes that params named in docs match formal arguments
      -	      #       should really filter out those that don't match before this
      -	      #       test
      -	      if comment_has_params?(comment_data)
      -		document_parameters(method.arguments, comment_data)
      
      +	    # TODO: assumes that params named in docs match formal arguments
      +	    #       should really filter out those that don't match before this
      +	    #       test
      +	    if comment_has_params?(comment_data)
      +	      document_parameters(method.arguments, comment_data)
      +	    end
      +	    if comment_has_return?(comment_data)
      +	      document_return(comment_data)
      +	    end
      +	    if comment_has_exceptions?(comment_data)
      +	      document_exceptions(comment_data)
      +	    end
      +	    if method.containing_type.is_a?(ASClass)
      +	      spec_method = method.specified_by
      +	      unless spec_method.nil?
      +		document_specified_by(spec_method)
      
       	      end
      
      -	      if comment_has_return?(comment_data)
      -		document_return(comment_data)
      -	      end
      -	      if comment_has_exceptions?(comment_data)
      -		document_exceptions(comment_data)
      -	      end
      -	      if method.containing_type.is_a?(ASClass)
      -		spec_method = method.specified_by
      -		unless spec_method.nil?
      -		  document_specified_by(spec_method)
      -		end
      -	      end
      -	      if comment_has_seealso?(comment_data)
      -		document_seealso(comment_data)
      -	      end
      
       	    end
      
      +	    if comment_has_seealso?(comment_data)
      +	      document_seealso(comment_data)
      +	    end
      
       	  end
       	end
             else
      
      @@ -432,9 +422,7 @@
      
       	  spec_method = method.specified_by
       	  unless spec_method.nil?
       	    html_div("class"=>"method_info") do
      
      -	      html_dl("class"=>"method_additional_info") do
      -		document_specified_by(spec_method)
      -	      end
      
      +	      document_specified_by(spec_method)
      
       	    end
       	  end
       	end
      
      @@ -480,20 +468,18 @@
      
         end
       
         def document_parameters(arguments, comment_data)
      
      -    html_dt("Parameters")
      -    html_dd do
      -      html_table("class"=>"arguments", "summary"=>"") do
      -	arguments.each do |arg|
      -	  desc = comment_find_param(comment_data, arg.name)
      -	  if desc
      -	    html_tr do
      -	      html_td do
      -		html_code(arg.name)
      -	      end
      -	      html_td do
      -		output_doccomment_blocktag(desc)
      -	      end
      
      +    html_h4("Parameters")
      +    html_table("class"=>"arguments extra_info", "summary"=>"") do
      +      arguments.each do |arg|
      +	desc = comment_find_param(comment_data, arg.name)
      +	if desc
      +	  html_tr do
      +	    html_td do
      +	      html_code(arg.name)
      
       	    end
      
      +	    html_td do
      +	      output_doccomment_blocktag(desc)
      +	    end
      
       	  end
       	end
             end
      
      @@ -501,38 +487,34 @@
      
         end
       
         def document_return(comment_data)
      
      -    html_dt("Return")
      -    html_dd do
      -      return_comment = comment_find_return(comment_data)
      -      html_p do
      -	output_doccomment_blocktag(return_comment)
      -      end
      
      +    html_h4("Return")
      +    return_comment = comment_find_return(comment_data)
      +    html_p("class"=>"extra_info") do
      +      output_doccomment_blocktag(return_comment)
      
           end
         end
       
         def document_exceptions(comment_data)
      
      -    html_dt("Throws")
      -    html_dd do
      -      html_table("class"=>"exceptions", "summary"=>"") do
      -	comment_each_exception(comment_data) do |exception_comment|
      -	  html_tr do
      -	    html_td do
      -	      link_type_proxy(exception_comment.exception_type)
      -	    end
      -	    html_td do
      -	      output_doccomment_blocktag(exception_comment)
      -	    end
      
      +    html_h4("Throws")
      +    html_table("class"=>"exceptions extra_info", "summary"=>"") do
      +      comment_each_exception(comment_data) do |exception_comment|
      +	html_tr do
      +	  html_td do
      +	    link_type_proxy(exception_comment.exception_type)
      
       	  end
      
      +	  html_td do
      +	    output_doccomment_blocktag(exception_comment)
      +	  end
      
       	end
             end
           end
         end
       
         def document_seealso(comment_data)
      
      -    html_dt("See Also")
      -    html_dd do
      
      +    html_h4("See Also")
      +    html_ul("class"=>"extra_info") do
      
             comment_each_seealso(comment_data) do |see_comment|
      
      -	html_p do
      
      +	html_li do
      
       	  output_doccomment_blocktag(see_comment)
       	end
             end
      
      @@ -540,8 +522,8 @@
      
         end
       
         def document_specified_by(method)
      
      -    html_dt("Specified By")
      -    html_dd do
      
      +    html_h4("Specified By")
      +    html_p("class"=>"extra_info") do
      
             link_method(self, method)
             pcdata(" in ")
             link_type(self, method.containing_type, true)
      

      trunk/as2api
      style.css 113 -> 114
      --- trunk/as2api/style.css	2005-06-08 22:41:37 UTC (rev 113)
      +++ trunk/as2api/style.css	2005-06-08 23:35:29 UTC (rev 114)
      @@ -1,4 +1,4 @@
      
      -h1, h2, h3, th {
      
      +h1, h2, h3, h4 th {
      
       	font-family: sans-serif;
       }
       
      
      @@ -9,6 +9,15 @@
      
       	-moz-border-radius: .2em;
       }
       
      
      +h4 {
      +	margin: 0;
      +}
      +
      +.extra_info {
      +	padding-left: 2em;
      +	margin: 0;
      +}
      +
      
       .method_details, .field_details {
       	padding-bottom: .5em;
       }
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Thu Jun 9 12:50:34 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 9 Jun 2005 12:50:34 +0000 Subject: [as2api-dev] Command line usage Message-ID: <20050609125034.GC23399@vhost.badgers-in-foil.co.uk> Has anyone got around to working on this yet? Also, I'm thinking that maybe the next release will drop support for the GUI, since I'm not feeling motivated enough to extend it with whatever parameters the CLI will gain, and most people showing an active interest in as2api seem happy enough using console tools. Any thoughts? dave -- http://david.holroyd.me.uk/ From Rostislav Hristov Thu Jun 9 13:05:36 2005 From: Rostislav Hristov (Rostislav Hristov) Date: Thu, 9 Jun 2005 16:05:36 +0300 Subject: [as2api-dev] Command line usage In-Reply-To: <20050609125034.GC23399@vhost.badgers-in-foil.co.uk> References: <20050609125034.GC23399@vhost.badgers-in-foil.co.uk> Message-ID: <435de143050609060534ce479b@mail.gmail.com> As I have said before I'm happy with a stable command line software. This program targets developers, it's free and is takes up to 30 minutes to download and setup Ruby. If you find time for GUI I think that it should be simple, with a generic way to add/remove parameters and may be with embedded Ruby engine. -Rostislav From dave at badgers-in-foil.co.uk Thu Jun 9 13:15:04 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 9 Jun 2005 13:15:04 +0000 Subject: [as2api-dev] Command line usage In-Reply-To: <20050609125034.GC23399@vhost.badgers-in-foil.co.uk> References: <20050609125034.GC23399@vhost.badgers-in-foil.co.uk> Message-ID: <20050609131504.GD23399@vhost.badgers-in-foil.co.uk> On Thu, Jun 09, 2005 at 12:50:34PM +0000, David Holroyd wrote: > Also, I'm thinking that maybe the next release will drop support for the > GUI, since I'm not feeling motivated enough to extend it with whatever > parameters the CLI will gain, and most people showing an active interest > in as2api seem happy enough using console tools. Here are some stats, by the way, File Downloads --------------------------- --------- as2api-allinone-w32-0.2.zip 340 as2api-0.2.tar.gz 59 [I should also point out that the GUI could always return at a later date.] dave -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Sun Jun 12 19:48:19 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 12 Jun 2005 19:48:19 +0000 Subject: [as2api-dev] Command line usage In-Reply-To: References: <20050609125034.GC23399@vhost.badgers-in-foil.co.uk> <20050609131504.GD23399@vhost.badgers-in-foil.co.uk> Message-ID: <20050612194819.GA27956@vhost.badgers-in-foil.co.uk> Three votes for, none against: Motion passed ;) On Sun, Jun 12, 2005 at 12:45:18PM +0100, Phil Powell wrote: > Form a OS X user perspective (and one who's going through the woes of > setting up a fresh deve environment on Tiger - eek) I have the feeling > that a GUI is not a high priority at the moment. > > Building AS2 apps is becoming a much more integrated process, along the > lines of a Java Webapp, and so it makes sense to have a sturdy > documentation tool which can be included in the build process, along > the lines of Javadoc. > > In coming weeks, I'm hoping to upgrade my XCode AS framework so that > it's a a generic, distributable template - I'm going to wire in as2api > to that also. > > -Phil > > On 9 Jun 2005, at 2:15 pm, David Holroyd wrote: > > >On Thu, Jun 09, 2005 at 12:50:34PM +0000, David Holroyd wrote: > >>Also, I'm thinking that maybe the next release will drop support for > >>the > >>GUI, since I'm not feeling motivated enough to extend it with whatever > >>parameters the CLI will gain, and most people showing an active > >>interest > >>in as2api seem happy enough using console tools. > > > >Here are some stats, by the way, > > > > File Downloads > > --------------------------- --------- > > as2api-allinone-w32-0.2.zip 340 > > as2api-0.2.tar.gz 59 > > > > > >[I should also point out that the GUI could always return at a later > >date.] dave -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Sun Jun 12 21:08:57 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 12 Jun 2005 21:08:57 +0000 Subject: [as2api-dev] [CVS trunk] Generate field index for superclass' fields even if this class has no fields Message-ID:
      Commit in trunk/as2api on MAIN
      api_model.rb+9114 -> 115
      html_output.rb+1-1114 -> 115
      +10-1
      2 modified files
      Generate field index for superclass' fields even if this class has no fields
      

      trunk/as2api
      api_model.rb 114 -> 115
      --- trunk/as2api/api_model.rb	2005-06-08 23:35:29 UTC (rev 114)
      +++ trunk/as2api/api_model.rb	2005-06-12 21:08:55 UTC (rev 115)
      @@ -183,6 +183,15 @@
      
           !@fields.empty?
         end
       
      
      +  # returns true if this class, or any superclass has fields
      +  def inherited_fields?
      +    return true if fields?
      +    each_ancestor do |supertype|
      +      return true if supertype.fields?
      +    end
      +    false
      +  end
      +
      
         def each_field
           @fields.each do |field|
             yield field
      

      trunk/as2api
      html_output.rb 114 -> 115
      --- trunk/as2api/html_output.rb	2005-06-08 23:35:29 UTC (rev 114)
      +++ trunk/as2api/html_output.rb	2005-06-12 21:08:55 UTC (rev 115)
      @@ -229,7 +229,7 @@
      
       	end
             end
             
      
      -      field_index_list(@type) if @type.fields?
      
      +      field_index_list(@type) if @type.inherited_fields?
      
             method_index_list(@type) if @type.methods?
             constructor_detail(@type) if @type.constructor? && document_member?(@type.constructor)
             field_detail_list(@type) if @type.fields?
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 12 21:11:11 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 12 Jun 2005 21:11:11 +0000 Subject: [as2api-dev] [CVS trunk] oops; add required parameter Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+1-1115 -> 116
      oops; add required parameter
      

      trunk/as2api
      html_output.rb 115 -> 116
      --- trunk/as2api/html_output.rb	2005-06-12 21:08:55 UTC (rev 115)
      +++ trunk/as2api/html_output.rb	2005-06-12 21:11:10 UTC (rev 116)
      @@ -262,7 +262,7 @@
      
       	  if type.fields?
       	    html_h4 do
       	      pcdata("Inherited from ")
      
      -	      link_type(type)
      
      +	      link_type(self, type)
      
       	    end
       	    html_p("class"=>"extra_info") do
       	      list_fields(type, link_for_type(type))
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 12 21:53:35 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 12 Jun 2005 21:53:35 +0000 Subject: [as2api-dev] [CVS trunk] Fix dependancy requirement Message-ID:
      Commit in trunk/as2api on MAIN
      api_loader.rb+1116 -> 117
      Fix dependancy requirement
      

      trunk/as2api
      api_loader.rb 116 -> 117
      --- trunk/as2api/api_loader.rb	2005-06-12 21:11:10 UTC (rev 116)
      +++ trunk/as2api/api_loader.rb	2005-06-12 21:53:35 UTC (rev 117)
      @@ -2,6 +2,7 @@
      
       require 'parse/lexer'
       require 'parse/parser'
       require 'api_model'
      
      +require 'doc_comment'
      
       
       # We used to just define the class again to add this attribute, but I want
       # to be compatable with Ruby1.6, which doesn' allow 'class ModName::ClassName'
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 12 21:54:30 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 12 Jun 2005 21:54:30 +0000 Subject: [as2api-dev] [CVS trunk] Make reference to another AS documentation tool project Message-ID:
      Commit in trunk/as2api on MAIN
      index.html+1117 -> 118
      Make reference to another AS documentation tool project
      

      trunk/as2api
      index.html 117 -> 118
      --- trunk/as2api/index.html	2005-06-12 21:53:35 UTC (rev 117)
      +++ trunk/as2api/index.html	2005-06-12 21:54:30 UTC (rev 118)
      @@ -150,6 +150,7 @@
      
             <li><a href="http://www.asdocgen.org/">ASDocGen</a></li>
             <li><a href="http://visiblearea.com/visdoc/">VisDoc</a></li>
             <li><a href="http://www.as2doc.com/">AS2Doc</a></li>
      
      +      <li><a href="http://asdt.sourceforge.net/">ASDT</a></li>
      
           </ul>
       
         </body>
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 12 21:57:31 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 12 Jun 2005 21:57:31 +0000 Subject: [as2api-dev] [CVS trunk] New command line interface; ui/cli.rb replaces documentor.rb as the entry point Message-ID:
      Commit in trunk/as2api on MAIN
      documenter.rb-33118 -> 119
      ui/cli.rb+147added 119
      +147-33
      1 added + 1 modified, total 2 files
      New command line interface; ui/cli.rb replaces documentor.rb as the entry point
      

      trunk/as2api
      documenter.rb 118 -> 119
      --- trunk/as2api/documenter.rb	2005-06-12 21:54:30 UTC (rev 118)
      +++ trunk/as2api/documenter.rb	2005-06-12 21:57:29 UTC (rev 119)
      @@ -29,10 +29,6 @@
      
       end
       
       
      
      -def parse_options
      -  
      -end
      -
      
       # lists the .as files in 'path', and it's subdirectories
       def each_source(path)
         require 'find'
      
      @@ -47,32 +43,3 @@
      
         end
       end
       
      
      -# Support for other kinds of output would be useful in the future.
      -# When the need arises, maybe the interface to 'output' subsystems will need
      -# more formalisation than just 'document_types()'
      -require 'html_output'
      -
      -type_agregator = GlobalTypeAggregator.new
      -
      -path = ARGV[0]
      -
      -each_source(path) do |name|
      -  File.open(File.join(path, name)) do |io|
      -    begin
      -      is_utf8 = detect_bom?(io)
      -      print "Parsing #{path}:#{name.inspect}"
      -      type = simple_parse(io)
      -      type.input_filename = name
      -      type.sourcepath_location(File.dirname(name))
      -      puts " -> #{type.qualified_name}"
      -      type.source_utf8 = is_utf8
      -      type_agregator.add_type(type)
      -    rescue =>e
      -      $stderr.puts "#{name}: #{e.message}\n#{e.backtrace.join("\n")}"
      -    end
      -  end
      -end
      -
      -type_agregator.resolve_types
      -
      -document_types("apidoc", type_agregator)
      

      trunk/as2api/ui
      cli.rb added at 119
      --- trunk/as2api/ui/cli.rb	2005-06-12 21:54:30 UTC (rev 118)
      +++ trunk/as2api/ui/cli.rb	2005-06-12 21:57:29 UTC (rev 119)
      @@ -0,0 +1,147 @@
      
      +
      +require 'documenter'
      +require 'getoptlong'
      +require 'html_output'
      +
      +Conf = Struct.new(:output_dir, :classpath, :package_filters)
      +
      +SourceFile = Struct.new(:prefix, :suffix)
      +
      +class PackageFilter
      +  def initialize(package_spec)
      +    @package_spec = Regexp.new("^" + package_spec.gsub(/\./, "/") + "/[^/]+$")
      +  end
      +
      +  def matches?(source_file)
      +    @package_spec =~ source_file
      +  end
      +end
      +
      +class PackageGlobFilter
      +  def initialize(package_spec)
      +    @package_spec = Regexp.new("^" + package_spec.gsub(/\./, "/"))
      +  end
      +
      +  def matches?(source_file)
      +    @package_spec =~ source_file
      +  end
      +end
      +
      +
      +class CLI
      +
      +  def parse_opts
      +    opts = GetoptLong.new(
      +      [ "--output-dir", "-d", GetoptLong::REQUIRED_ARGUMENT ],
      +      [ "--classpath",  "-c", GetoptLong::REQUIRED_ARGUMENT ]
      +    )
      +
      +    conf = Conf.new
      +    conf.classpath = []
      +    conf.package_filters = []
      +
      +    opts.each do |opt, arg|
      +      case opt
      +	when "--output-dir"
      +	  conf.output_dir = arg
      +	when "--classpath"
      +	  conf.classpath.concat(arg.split(File::PATH_SEPARATOR))
      +      end
      +    end
      +    if ARGV.empty?
      +      usage
      +      error("No packages specified")
      +    end
      +    ARGV.each do |package_spec|
      +      conf.package_filters << to_filter(package_spec)
      +    end
      +
      +    conf.classpath << "." if conf.classpath.empty?
      +    conf.output_dir = "apidoc" if conf.output_dir.nil?
      +
      +    conf
      +  end
      +
      +  def to_filter(package_spec)
      +    case package_spec
      +      when /\.\*$/
      +	PackageGlobFilter.new($`)
      +      else
      +	PackageFilter.new(package_spec)
      +    end
      +  end
      +
      +  def process_file?(name)
      +    @conf.package_filters.each do |filter|
      +      return true if filter.matches?(name)
      +    end
      +    false
      +  end
      +
      +  def find_sources
      +    result = []
      +    @conf.classpath.each do |path|
      +      each_source(path) do |source|
      +	result << SourceFile.new(path, source) if process_file?(source)
      +      end
      +    end
      +    result
      +  end
      +
      +  def parse_file(file, type_agregator)
      +    File.open(File.join(file.prefix, file.suffix)) do |io|
      +      begin
      +	is_utf8 = detect_bom?(io)
      +	print "Parsing #{file.prefix}:#{file.suffix}"
      +	type = simple_parse(io)
      +	type.input_filename = file.suffix
      +	type.sourcepath_location(File.dirname(file.suffix))
      +	puts " -> #{type.qualified_name}"
      +	type.source_utf8 = is_utf8
      +	type_agregator.add_type(type)
      +      rescue =>e
      +	$stderr.puts "#{file.suffix}: #{e.message}\n#{e.backtrace.join("\n")}"
      +      end
      +    end
      +  end
      +
      +  def parse_all(files)
      +    type_agregator = GlobalTypeAggregator.new
      +    files.each do |file|
      +      parse_file(file, type_agregator)
      +    end
      +    type_agregator
      +  end
      +
      +  def main
      +    @conf = parse_opts
      +    files = find_sources
      +    error("No source files matching specified packages") if files.empty?
      +    type_agregator = parse_all(files)
      +    type_agregator.resolve_types
      +    document_types(@conf.output_dir, type_agregator)
      +  end
      +
      +  def usage
      +    puts <<-END
      +Usage:
      +  #{$0} [options] <package spec> ...
      +
      +Where options include:
      +  --classpath <path>
      +  --output-dir <path>
      +    END
      +  end
      +
      +  def error(msg)
      +    $stderr.puts("error: #{msg}")
      +    exit(-1)
      +  end
      +
      +end
      +
      +
      +CLI.new.main()
      +
      +
      +# vim:shiftwidth=2:softtabstop=2
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 13 23:02:28 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 13 Jun 2005 23:02:28 +0000 Subject: [as2api-dev] [CVS trunk] Expanded usage instructions Message-ID:
      Commit in trunk/as2api/ui on MAIN
      cli.rb+19119 -> 120
      Expanded usage instructions
      

      trunk/as2api/ui
      cli.rb 119 -> 120
      --- trunk/as2api/ui/cli.rb	2005-06-12 21:57:29 UTC (rev 119)
      +++ trunk/as2api/ui/cli.rb	2005-06-13 23:02:25 UTC (rev 120)
      @@ -32,6 +32,7 @@
      
       
         def parse_opts
           opts = GetoptLong.new(
      
      +      [ "--help",       "-h", GetoptLong::NO_ARGUMENT ],
      
             [ "--output-dir", "-d", GetoptLong::REQUIRED_ARGUMENT ],
             [ "--classpath",  "-c", GetoptLong::REQUIRED_ARGUMENT ]
           )
      
      @@ -46,6 +47,9 @@
      
       	  conf.output_dir = arg
       	when "--classpath"
       	  conf.classpath.concat(arg.split(File::PATH_SEPARATOR))
      
      +	when "--help"
      +	  usage
      +	  exit(0)
      
             end
           end
           if ARGV.empty?
      
      @@ -127,9 +131,24 @@
      
       Usage:
         #{$0} [options] <package spec> ...
       
      
      +A package spec can be given as:
      +
      +  com.example.pkg
      +        Document types in the package 'com.example.pkg'.
      +  com.example.pkg.*
      +        Document types in the package 'com.example.pkg', and any other packages
      +        with the same prefix (e.g. 'com.example.pkg.utils.extra' types too).
      +
      
       Where options include:
      
      +
      
         --classpath <path>
      
      +        A list of paths, delimited by '#{File::PATH_SEPARATOR}'.  Each path will
      +	be searched for packages matching the given <package spec> list.  If
      +	no classpath is specified, only the current directory is searched.
      
         --output-dir <path>
      
      +        The directory into which generated HTML files will be placed (the
      +	directory will be created, if required.  If no output directory is
      +	specified the default 'apidocs' is used.
      
           END
         end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 13 23:47:25 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 13 Jun 2005 23:47:25 +0000 Subject: [as2api-dev] [CVS trunk] Make generated page titles modifiable with a command line option Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+28-17120 -> 121
      ui/cli.rb+10-4120 -> 121
      +38-21
      2 modified files
      Make generated page titles modifiable with a command line option
      

      trunk/as2api
      html_output.rb 120 -> 121
      --- trunk/as2api/html_output.rb	2005-06-13 23:02:25 UTC (rev 120)
      +++ trunk/as2api/html_output.rb	2005-06-13 23:47:22 UTC (rev 121)
      @@ -111,11 +111,23 @@
      
           @encoding = "iso-8859-1"
           @doctype_id = :strict
           @title = nil
      
      +    @title_extra = nil
      
           @io = nil  # to be set during the lifetime of generate() call
         end
       
      
      -  attr_accessor :path_name, :base_name, :encoding, :doctype_id, :title
      
      +  attr_accessor :path_name, :base_name, :encoding, :doctype_id, :title, :title_extra
      
       
      
      +  def title
      +    if @title_extra
      +      if @title
      +	"#{@title} - #{@title_extra}"
      +      else
      +	@title_extra
      +      end
      +    else
      +      @title
      +    end
      +  end
      
       
         def generate(xml_writer)
           @io = xml_writer
      
      @@ -229,7 +241,7 @@
      
       	end
             end
             
      
      -      field_index_list(@type) if @type.inherited_fields?
      
      +      field_index_list(@type) if @type.fields? && @type.inherited_fields?
      
             method_index_list(@type) if @type.methods?
             constructor_detail(@type) if @type.constructor? && document_member?(@type.constructor)
             field_detail_list(@type) if @type.fields?
      
      @@ -966,7 +978,6 @@
      
         def initialize(path_name, type_agregator)
           super(path_name, "all-types-frame")
           @type_agregator = type_agregator
      
      -    @title = "as2api"
      
           @doctype_id = :transitional
         end
       
      
      @@ -1001,7 +1012,6 @@
      
       
         def initialize(path_name)
           super(path_name, "frameset")
      
      -    @title = "as2api"
      
           @doctype_id = :frameset
         end
       
      
      @@ -1141,17 +1151,17 @@
      
       
       end
       
      
      -def make_page_list(output_path, type_agregator)
      
      +def make_page_list(conf, type_agregator)
      
         list = []
       
      
      -  list << FramesetPage.new(output_path)
      -  list << OverviewPage.new(output_path, type_agregator)
      -  list << OverviewFramePage.new(output_path, type_agregator)
      -  list << AllTypesFramePage.new(output_path, type_agregator)
      
      +  list << FramesetPage.new(conf.output_dir)
      +  list << OverviewPage.new(conf.output_dir, type_agregator)
      +  list << OverviewFramePage.new(conf.output_dir, type_agregator)
      +  list << AllTypesFramePage.new(conf.output_dir, type_agregator)
      
       
         # packages..
         type_agregator.each_package do |package|
      
      -    dir = File.join(output_path, package_dir_for(package))
      
      +    dir = File.join(conf.output_dir, package_dir_for(package))
      
           list << PackageIndexPage.new(dir, package)
           list << PackageFramePage.new(dir, package)
         end
      
      @@ -1159,27 +1169,28 @@
      
         # types..
         type_agregator.each_type do |type|
           if type.document?
      
      -      dir = File.join(output_path, type.package_name.gsub(/\./, "/"))
      
      +      dir = File.join(conf.output_dir, type.package_name.gsub(/\./, "/"))
      
             list << TypePage.new(dir, type)
           end
         end
       
      
      -  dir = File.join(output_path, "index-files")
      
      +  dir = File.join(conf.output_dir, "index-files")
      
         list << IndexPage.new(dir, type_agregator)
       
         list
       end
       
      
      -def create_all_pages(list)
      
      +def create_all_pages(conf, list)
      
         list.each do |page|
      
      +    page.title_extra = conf.title
      
           create_page(page)
         end
       end
       
      
      -def document_types(output_path, type_agregator)
      -  list = make_page_list(output_path, type_agregator)
      -  create_all_pages(list)
      -  package_list(output_path, type_agregator)
      
      +def document_types(conf, type_agregator)
      +  list = make_page_list(conf, type_agregator)
      +  create_all_pages(conf, list)
      +  package_list(conf.output_dir, type_agregator)
      
       end
       
       # vim:softtabstop=2:shiftwidth=2
      

      trunk/as2api/ui
      cli.rb 120 -> 121
      --- trunk/as2api/ui/cli.rb	2005-06-13 23:02:25 UTC (rev 120)
      +++ trunk/as2api/ui/cli.rb	2005-06-13 23:47:22 UTC (rev 121)
      @@ -3,7 +3,10 @@
      
       require 'getoptlong'
       require 'html_output'
       
      
      -Conf = Struct.new(:output_dir, :classpath, :package_filters)
      
      +Conf = Struct.new(:output_dir,
      +                  :classpath,
      +		  :package_filters,
      +		  :title)
      
       
       SourceFile = Struct.new(:prefix, :suffix)
       
      
      @@ -34,7 +37,8 @@
      
           opts = GetoptLong.new(
             [ "--help",       "-h", GetoptLong::NO_ARGUMENT ],
             [ "--output-dir", "-d", GetoptLong::REQUIRED_ARGUMENT ],
      
      -      [ "--classpath",  "-c", GetoptLong::REQUIRED_ARGUMENT ]
      
      +      [ "--classpath",        GetoptLong::REQUIRED_ARGUMENT ],
      +      [ "--title",            GetoptLong::REQUIRED_ARGUMENT ]
      
           )
       
           conf = Conf.new
      
      @@ -47,6 +51,8 @@
      
       	  conf.output_dir = arg
       	when "--classpath"
       	  conf.classpath.concat(arg.split(File::PATH_SEPARATOR))
      
      +	when "--title"
      +	  conf.title = arg
      
       	when "--help"
       	  usage
       	  exit(0)
      
      @@ -123,7 +129,7 @@
      
           error("No source files matching specified packages") if files.empty?
           type_agregator = parse_all(files)
           type_agregator.resolve_types
      
      -    document_types(@conf.output_dir, type_agregator)
      
      +    document_types(@conf, type_agregator)
      
         end
       
         def usage
      
      @@ -131,7 +137,7 @@
      
       Usage:
         #{$0} [options] <package spec> ...
       
      
      -A package spec can be given as:
      
      +Each package spec can be given as:
      
       
         com.example.pkg
               Document types in the package 'com.example.pkg'.
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 14 19:43:06 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 14 Jun 2005 19:43:06 +0000 Subject: [as2api-dev] [CVS trunk] Don't report progress, by default. Message-ID:
      Commit in trunk/as2api on MAIN
      documenter.rb+15121 -> 122
      html_output.rb+6-3121 -> 122
      ui/cli.rb+48-6121 -> 122
      +69-9
      3 modified files
      Don't report progress, by default.
      When asked to, with --progress, show kewl ASCII-art progress bars.
      

      trunk/as2api
      documenter.rb 121 -> 122
      --- trunk/as2api/documenter.rb	2005-06-13 23:47:22 UTC (rev 121)
      +++ trunk/as2api/documenter.rb	2005-06-14 19:43:03 UTC (rev 122)
      @@ -5,7 +5,22 @@
      
       
       
       
      
      +class NullProgressListener
      +  def parsing_sources(total_files)
      +    yield
      +  end
      
       
      
      +  def parse_source(file_number, file_name)
      +  end
      +
      +  def generating_pages(total_pages)
      +    yield
      +  end
      +
      +  def generate_page(file_number, file_name)
      +  end
      +end
      +
      
       def simple_parse(input)
         as_io = ASIO.new(input)
         lex = DocASLexer.new(ActionScript::Parse::ASLexer.new(as_io))
      

      trunk/as2api
      html_output.rb 121 -> 122
      --- trunk/as2api/html_output.rb	2005-06-13 23:47:22 UTC (rev 121)
      +++ trunk/as2api/html_output.rb	2005-06-14 19:43:03 UTC (rev 122)
      @@ -1181,9 +1181,12 @@
      
       end
       
       def create_all_pages(conf, list)
      
      -  list.each do |page|
      -    page.title_extra = conf.title
      -    create_page(page)
      
      +  conf.progress_listener.generating_pages(list.length) do
      +    list.each_with_index do |page, index|
      +      page.title_extra = conf.title
      +      conf.progress_listener.generate_page(index, page)
      +      create_page(page)
      +    end
      
         end
       end
       
      

      trunk/as2api/ui
      cli.rb 121 -> 122
      --- trunk/as2api/ui/cli.rb	2005-06-13 23:47:22 UTC (rev 121)
      +++ trunk/as2api/ui/cli.rb	2005-06-14 19:43:03 UTC (rev 122)
      @@ -6,7 +6,8 @@
      
       Conf = Struct.new(:output_dir,
                         :classpath,
       		  :package_filters,
      
      -		  :title)
      
      +		  :title,
      +		  :progress_listener)
      
       
       SourceFile = Struct.new(:prefix, :suffix)
       
      
      @@ -31,6 +32,42 @@
      
       end
       
       
      
      +class VerboseProgressListener < NullProgressListener
      +  def parsing_sources(total_files)
      +    @total = total_files
      +    $stderr.puts("Parsing #{total_files} source files:")
      +    yield
      +    progress_bar(total_files)  # ensure we see '100%'
      +    puts
      +  end
      +
      +  def parse_source(file_number, file_name)
      +    progress_bar(file_number)
      +  end
      +
      +  def generating_pages(total_pages)
      +    @total = total_pages
      +    $stderr.puts("Generating #{total_pages} HTML pages:")
      +    yield
      +    progress_bar(total_pages)  # ensure we see '100%'
      +    puts
      +  end
      +
      +  def generate_page(file_number, file_name)
      +    progress_bar(file_number)
      +  end
      +
      +  private
      +
      +  WIDTH = 38
      +
      +  def progress_bar(count)
      +    size = count*WIDTH/@total
      +    $stderr.print "[#{'='*size}#{' '*(WIDTH-size)}] #{count*100/@total}%\r"
      +  end
      +end
      +
      +
      
       class CLI
       
         def parse_opts
      
      @@ -38,7 +75,8 @@
      
             [ "--help",       "-h", GetoptLong::NO_ARGUMENT ],
             [ "--output-dir", "-d", GetoptLong::REQUIRED_ARGUMENT ],
             [ "--classpath",        GetoptLong::REQUIRED_ARGUMENT ],
      
      -      [ "--title",            GetoptLong::REQUIRED_ARGUMENT ]
      
      +      [ "--title",            GetoptLong::REQUIRED_ARGUMENT ],
      +      [ "--progress",         GetoptLong::NO_ARGUMENT ]
      
           )
       
           conf = Conf.new
      
      @@ -56,6 +94,8 @@
      
       	when "--help"
       	  usage
       	  exit(0)
      
      +	when "--progress"
      +	  conf.progress_listener = VerboseProgressListener.new
      
             end
           end
           if ARGV.empty?
      
      @@ -66,6 +106,7 @@
      
             conf.package_filters << to_filter(package_spec)
           end
       
      
      +    conf.progress_listener = NullProgressListener.new if conf.progress_listener.nil?
      
           conf.classpath << "." if conf.classpath.empty?
           conf.output_dir = "apidoc" if conf.output_dir.nil?
       
      
      @@ -102,11 +143,9 @@
      
           File.open(File.join(file.prefix, file.suffix)) do |io|
             begin
       	is_utf8 = detect_bom?(io)
      
      -	print "Parsing #{file.prefix}:#{file.suffix}"
      
       	type = simple_parse(io)
       	type.input_filename = file.suffix
       	type.sourcepath_location(File.dirname(file.suffix))
      
      -	puts " -> #{type.qualified_name}"
      
       	type.source_utf8 = is_utf8
       	type_agregator.add_type(type)
             rescue =>e
      
      @@ -117,8 +156,11 @@
      
       
         def parse_all(files)
           type_agregator = GlobalTypeAggregator.new
      
      -    files.each do |file|
      -      parse_file(file, type_agregator)
      
      +    @conf.progress_listener.parsing_sources(files.length) do
      +      files.each_with_index do |file, index|
      +	@conf.progress_listener.parse_source(index, file)
      +	parse_file(file, type_agregator)
      +      end
      
           end
           type_agregator
         end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 14 19:53:47 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 14 Jun 2005 19:53:47 +0000 Subject: [as2api-dev] [CVS trunk] Document those new options Message-ID:
      Commit in trunk/as2api/ui on MAIN
      cli.rb+4122 -> 123
      Document those new options
      

      trunk/as2api/ui
      cli.rb 122 -> 123
      --- trunk/as2api/ui/cli.rb	2005-06-14 19:43:03 UTC (rev 122)
      +++ trunk/as2api/ui/cli.rb	2005-06-14 19:53:46 UTC (rev 123)
      @@ -197,6 +197,10 @@
      
               The directory into which generated HTML files will be placed (the
       	directory will be created, if required.  If no output directory is
       	specified the default 'apidocs' is used.
      
      +  --progress
      +	Print feedback showing how far tasks have progressed
      +  --title <text>
      +        Put the given text into the titles of generated HTML pages
      
           END
         end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 14 21:43:04 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 14 Jun 2005 21:43:04 +0000 Subject: [as2api-dev] [CVS trunk] Fix typo Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+1-1123 -> 124
      Fix typo
      

      trunk/as2api
      html_output.rb 123 -> 124
      --- trunk/as2api/html_output.rb	2005-06-14 19:53:46 UTC (rev 123)
      +++ trunk/as2api/html_output.rb	2005-06-14 21:43:02 UTC (rev 124)
      @@ -322,7 +322,7 @@
      
       	      pcdata("Inherited from ")
       	      link_type(self, type)
       	    end
      
      -	    html_p("class"=>"extra_infp") do
      
      +	    html_p("class"=>"extra_info") do
      
       	      list_methods(type, known_method_names, link_for_type(type))
       	    end
       	  end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 14 22:57:52 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 14 Jun 2005 22:57:52 +0000 Subject: [as2api-dev] [CVS trunk] Remove the need to copy the CSS to the output directory by hand. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+113124 -> 125
      style.css-97124 removed
      +113-97
      1 removed + 1 modified, total 2 files
      Remove the need to copy the CSS to the output directory by hand.
      

      trunk/as2api
      html_output.rb 124 -> 125
      --- trunk/as2api/html_output.rb	2005-06-14 21:43:02 UTC (rev 124)
      +++ trunk/as2api/html_output.rb	2005-06-14 22:57:49 UTC (rev 125)
      @@ -3,6 +3,118 @@
      
       require 'xhtmlwriter'
       require 'doc_comment'
       
      
      +
      +def stylesheet(output_dir)
      +  in_subdir(output_dir) do
      +    name = "style.css"
      +
      +    # avoid overwriting a (possibly modified) existing stylesheet
      +    return if FileTest.exist?(File.join($path, name))
      +
      +    write_file(name) do |out|
      +      out.print <<-HERE
      +h1, h2, h3, h4 th {
      +	font-family: sans-serif;
      +}
      +
      +h2 {
      +	background-color: #ccccff;
      +	padding-left: .2em;
      +	padding-right: .2em;
      +	-moz-border-radius: .2em;
      +}
      +
      +h4 {
      +	margin: 0;
      +}
      +
      +.extra_info {
      +	padding-left: 2em;
      +	margin: 0;
      +}
      +
      +.method_details, .field_details {
      +	padding-bottom: .5em;
      +}
      +
      +.method_info, .field_info {
      +	padding-left: 3em;
      +}
      +
      +.alt_row {
      +	background-color: #eeeeee;
      +}
      +
      +.main_nav {
      +	background-color: #EEEEFF;
      +	padding: 4px;
      +}
      +.main_nav li {
      +	font-family: sans-serif;
      +	font-weight: bolder;
      +	display: inline;
      +}
      +.main_nav li * {
      +	padding: 4px;
      +}
      +.nav_current {
      +	background-color: #00008B;
      +	color: #FFFFFF;
      +}
      +
      +table.summary_list {
      +	border-collapse: collapse;
      +	width: 100%;
      +	margin-bottom: 1em;
      +}
      +table.summary_list th {
      +	background-color: #CCCCFF;
      +	font-size: larger;
      +}
      +table.summary_list td, table.summary_list th {
      +	border: 2px solid grey;
      +	padding: .2em;
      +}
      +ul.navigation_list {
      +	padding-left: 0;
      +}
      +ul.navigation_list li {
      +	margin: 0 0 .4em 0;
      +	list-style: none;
      +}
      +
      +table.exceptions td, table.arguments td {
      +	vertical-align: text-top;
      +	padding: 0 1em .5em 0;
      +}
      +
      +/*
      +.unresolved_type_name {
      +	background-color: red;
      +	color: white;
      +}
      +*/
      +
      +.interface_name {
      +	font-style: italic;
      +}
      +
      +.footer {
      +	text-align: center;
      +	font-size: smaller;
      +}
      +/*
      +.read_write_only {
      +}
      +*/
      +.diagram {
      +	text-align: center;
      +}
      +      HERE
      +    end
      +  end
      +end
      +
      
       def link_for_type(type)
         base_path(type.qualified_name.gsub(/\./, "/")+".html")
       end
      
      @@ -1194,6 +1306,7 @@
      
         list = make_page_list(conf, type_agregator)
         create_all_pages(conf, list)
         package_list(conf.output_dir, type_agregator)
      
      +  stylesheet(conf.output_dir)
      
       end
       
       # vim:softtabstop=2:shiftwidth=2
      

      trunk/as2api
      style.css removed after 124
      --- trunk/as2api/style.css	2005-06-14 21:43:02 UTC (rev 124)
      +++ trunk/as2api/style.css	2005-06-14 22:57:49 UTC (rev 125)
      @@ -1,97 +0,0 @@
      
      -h1, h2, h3, h4 th {
      -	font-family: sans-serif;
      -}
      -
      -h2 {
      -	background-color: #ccccff;
      -	padding-left: .2em;
      -	padding-right: .2em;
      -	-moz-border-radius: .2em;
      -}
      -
      -h4 {
      -	margin: 0;
      -}
      -
      -.extra_info {
      -	padding-left: 2em;
      -	margin: 0;
      -}
      -
      -.method_details, .field_details {
      -	padding-bottom: .5em;
      -}
      -
      -.method_info, .field_info {
      -	padding-left: 3em;
      -}
      -
      -.alt_row {
      -	background-color: #eeeeee;
      -}
      -
      -.main_nav {
      -	background-color: #EEEEFF;
      -	padding: 4px;
      -}
      -.main_nav li {
      -	font-family: sans-serif;
      -	font-weight: bolder;
      -	display: inline;
      -}
      -.main_nav li * {
      -	padding: 4px;
      -}
      -.nav_current {
      -	background-color: #00008B;
      -	color: #FFFFFF;
      -}
      -
      -table.summary_list {
      -	border-collapse: collapse;
      -	width: 100%;
      -	margin-bottom: 1em;
      -}
      -table.summary_list th {
      -	background-color: #CCCCFF;
      -	font-size: larger;
      -}
      -table.summary_list td, table.summary_list th {
      -	border: 2px solid grey;
      -	padding: .2em;
      -}
      -ul.navigation_list {
      -	padding-left: 0;
      -}
      -ul.navigation_list li {
      -	margin: 0 0 .4em 0;
      -	list-style: none;
      -}
      -
      -table.exceptions td, table.arguments td {
      -	vertical-align: text-top;
      -	padding: 0 1em .5em 0;
      -}
      -
      -/*
      -.unresolved_type_name {
      -	background-color: red;
      -	color: white;
      -}
      -*/
      -
      -.interface_name {
      -	font-style: italic;
      -}
      -
      -.footer {
      -	text-align: center;
      -	font-size: smaller;
      -}
      -/*
      -.read_write_only {
      -}
      -*/
      -.diagram {
      -	text-align: center;
      -}
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 15 07:33:27 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 15 Jun 2005 07:33:27 +0000 Subject: [as2api-dev] [CVS trunk] Have the 'document' property of an ASType be settable per-instance Message-ID:
      Commit in trunk/as2api on MAIN
      api_model.rb+7-5125 -> 126
      Have the 'document' property of an ASType be settable per-instance
      

      trunk/as2api
      api_model.rb 125 -> 126
      --- trunk/as2api/api_model.rb	2005-06-14 22:57:49 UTC (rev 125)
      +++ trunk/as2api/api_model.rb	2005-06-15 07:33:26 UTC (rev 126)
      @@ -26,6 +26,7 @@
      
           @type_resolver = nil
           @import_manager = nil
           @input_filename = nil
      
      +    @document = true
      
         end
       
         attr_accessor :package, :extends, :comment, :source_utf8, :type_resolver, :import_manager, :input_filename, :intrinsic, :constructor
      
      @@ -120,19 +121,20 @@
      
         end
       
         def document?
      
      -    true
      
      +    @document
      
         end
      
      +
      +  def document=(is_allowed_in_documentation)
      +    @document = is_allowed_in_documentation
      +  end
      
       end
       
       class ASVoidType < ASType
         def initialize
           @name = "Void"
           @package_name = ""
      
      +    @document = false
      
         end
      
      -
      -  def document?
      -    false
      -  end
      
       end
       
       AS_VOID = ASVoidType.new
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 15 07:43:51 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 15 Jun 2005 07:43:51 +0000 Subject: [as2api-dev] [CVS trunk] Hack-in initial support for parsing types outside the set being documented. Message-ID:
      Commit in trunk/as2api on MAIN
      api_loader.rb+83-6126 -> 127
      documenter.rb-11126 -> 127
      ui/cli.rb+1-1126 -> 127
      +84-18
      3 modified files
      Hack-in initial support for parsing types outside the set being documented.
      
      This allows us to put the MM 'Classes' directory into the classpath, and have
      references to Object, String et al get resolved, without actually having to
      generate pages documenting those types.  The main utility of this
      functionality is in showing what members are inherited from the external type.
      
      This hopefully means an end to lots of bogus
        "Found no definition of type known locally as <blah>"
      messages.
      
      The implementation sucks a bit, and there are still places that will attempt
      to hyperlink to pages which don't exist.
      

      trunk/as2api
      api_loader.rb 126 -> 127
      --- trunk/as2api/api_loader.rb	2005-06-15 07:33:26 UTC (rev 126)
      +++ trunk/as2api/api_loader.rb	2005-06-15 07:43:51 UTC (rev 127)
      @@ -9,6 +9,33 @@
      
       ActionScript::Parse::ASToken.module_eval("attr_accessor :last_comment")
       
       
      
      +def simple_parse(input)
      +  as_io = ASIO.new(input)
      +  lex = DocASLexer.new(ActionScript::Parse::ASLexer.new(as_io))
      +  parse = DocASParser.new(lex)
      +  handler = DocASHandler.new
      +  parse.handler = handler
      +  parse.parse_compilation_unit
      +  handler.defined_type
      +end
      +
      +
      +def parse_file(file)
      +  File.open(File.join(file.prefix, file.suffix)) do |io|
      +    begin
      +      is_utf8 = detect_bom?(io)
      +      type = simple_parse(io)
      +      type.input_filename = file.suffix
      +      type.sourcepath_location(File.dirname(file.suffix))
      +      type.source_utf8 = is_utf8
      +      return type
      +    rescue =>e
      +      $stderr.puts "#{file.suffix}: #{e.message}\n#{e.backtrace.join("\n")}"
      +    end
      +  end
      +end
      +
      +
      
       # Hacked subclass of SkipASLexer that remembers multiline comment tokens as
       # they're bing skipped over, and then pokes them into the next real token
       # that comes by
      
      @@ -80,7 +107,6 @@
      
         end
       
         def compilation_unit_start
      
      -    @type_resolver = LocalTypeResolver.new
      
           @import_manager = ImportManager.new
           @defined_type = nil
         end
      
      @@ -97,6 +123,7 @@
      
       
         def start_class(dynamic, name, super_name, interfaces)
           @defined_type = ASClass.new(name)
      
      +    @type_resolver = LocalTypeResolver.new(@defined_type)
      
           if @doc_comment
             input = create_comment_parser_input(@doc_comment)
             @defined_type.comment = @type_comment_parser.parse(input)
      
      @@ -121,6 +148,7 @@
      
       
         def start_interface(name, super_name)
           @defined_type = ASInterface.new(name)
      
      +    @type_resolver = LocalTypeResolver.new(@defined_type)
      
           if @doc_comment
             input = create_comment_parser_input(@doc_comment)
             @defined_type.comment = @type_comment_parser.parse(input)
      
      @@ -279,13 +307,14 @@
      
       class TypeProxy
         # TODO: this should be in api_model.rb
       
      
      -  def initialize(name)
      
      +  def initialize(containing_type, name)
      
           @name = name
      
      +    @containing_type = containing_type
      
           @resolved_type = nil
           @lineno = nil
         end
       
      
      -  attr_accessor :name, :resolved_type, :lineno
      
      +  attr_accessor :name, :containing_type, :resolved_type, :lineno
      
       
         def resolved?
           !@resolved_type.nil?
      
      @@ -312,7 +341,8 @@
      
         #       class supplies *aren't* resolved yet, this class is completely
         #       mis-named.
       
      
      -  def initialize
      
      +  def initialize(containing_type)
      +    @containing_type = containing_type
      
           @named_types = {}
         end
       
      
      @@ -323,7 +353,7 @@
      
           end
           type = @named_types[name]
           if type.nil?
      
      -      type = TypeProxy.new(name)
      
      +      type = TypeProxy.new(@containing_type, name)
      
             type.lineno = lineno
             @named_types[name] = type
           end
      
      @@ -348,9 +378,11 @@
      
         # TODO: this structure sucks; responsibility for type resolution should be
         #       entirely seperate from aggregation, not shoe-horned into this class
       
      
      -  def initialize
      
      +  def initialize(classpath)
      +    @classpath = classpath
      
           @types = []
           @packages = {}
      
      +    @parsed_external_types = {}
      
         end
       
         def add_type(type)
      
      @@ -399,6 +431,9 @@
      
             resolver = type.type_resolver
             resolver.each do |type_proxy|
       	real_type = local_namespace[type_proxy.local_name]
      
      +	unless real_type
      +	  real_type = maybe_parse_external_definition(type_proxy)
      +	end
      
       	if real_type
       	  type_proxy.resolved_type = real_type
       	else
      
      @@ -442,6 +477,48 @@
      
             end
           end
         end
      
      +
      +  def classname_to_filename(qualified_class_name)
      +    return qualified_class_name.sub(/\./, File::SEPARATOR) + ".as"
      +  end
      +
      +  def search_classpath_for(qualified_class_name)
      +    filename = classname_to_filename(qualified_class_name)
      +
      +    @classpath.each do |path|
      +      if FileTest.exist?(File.join(path, filename))
      +	return SourceFile.new(path, filename)
      +      end
      +    end
      +
      +    nil
      +  end
      +
      +  def find_file_matching(type_proxy)
      +    file_name = search_classpath_for(type_proxy.name)
      +    return file_name unless file_name.nil?
      +    return nil if type_proxy.qualified?
      +
      +    type_proxy.containing_type.import_manager.each_package do |package_name|
      +      candidate_name = package_name.join(".") + "." + type_proxy.name
      +      file_name = search_classpath_for(candidate_name)
      +      return file_name unless file_name.nil?
      +    end
      +
      +    nil
      +  end
      +
      +  def maybe_parse_external_definition(type_proxy)
      +    source_file = find_file_matching(type_proxy)
      +    return nil if source_file.nil?
      +    astype = @parsed_external_types[source_file.suffix]
      +    return astype unless astype.nil?
      +    astype = parse_file(source_file)
      +    astype.document = false
      +    @parsed_external_types[source_file.suffix] = astype
      +
      +    astype
      +  end
      
       end
       
       # vim:softtabstop=2:shiftwidth=2
      

      trunk/as2api
      documenter.rb 126 -> 127
      --- trunk/as2api/documenter.rb	2005-06-15 07:33:26 UTC (rev 126)
      +++ trunk/as2api/documenter.rb	2005-06-15 07:43:51 UTC (rev 127)
      @@ -21,17 +21,6 @@
      
         end
       end
       
      
      -def simple_parse(input)
      -  as_io = ASIO.new(input)
      -  lex = DocASLexer.new(ActionScript::Parse::ASLexer.new(as_io))
      -  parse = DocASParser.new(lex)
      -  handler = DocASHandler.new
      -  parse.handler = handler
      -  parse.parse_compilation_unit
      -  handler.defined_type
      -end
      -
      -
      
       BOM = "\357\273\277"
       
       # Look for a byte-order-marker in the first 3 bytes of io.
      

      trunk/as2api/ui
      cli.rb 126 -> 127
      --- trunk/as2api/ui/cli.rb	2005-06-15 07:33:26 UTC (rev 126)
      +++ trunk/as2api/ui/cli.rb	2005-06-15 07:43:51 UTC (rev 127)
      @@ -155,7 +155,7 @@
      
         end
       
         def parse_all(files)
      
      -    type_agregator = GlobalTypeAggregator.new
      
      +    type_agregator = GlobalTypeAggregator.new(@conf.classpath)
      
           @conf.progress_listener.parsing_sources(files.length) do
             files.each_with_index do |file, index|
       	@conf.progress_listener.parse_source(index, file)
      
      CVSspam 0.2.11
      From erixtekila at dotgeek.org Wed Jun 15 13:11:42 2005 From: erixtekila at dotgeek.org (erixtekila) Date: Wed, 15 Jun 2005 15:11:42 +0200 Subject: [as2api-dev] Minor problems with non windows binary Message-ID: <2779445b7de7285f143c38b4ebadc34e@dotgeek.org> Hi David, I've just updated my version of as2api. The new cli is really neat and work very well. Great ! Just some little problems. I assume that is because I use commandline ruby call from the source directory : cd /Applications/multiMedias/Flash_Utils/documentation/as2api/source ruby ui/cli.rb \ --classpath /Volumes/data/ericZone/Taf/source/_projet/src:/Volumes/data/ericZone/ Taf/_Projets/eclipse/MMClasses \ --output-dir /Volumes/data/ericZone/Taf/source/_projet/documentation \ --title "Client" com.* net.* 1- All the paths in the outputted html are wrong. When I click on a link in the frameset, it fails. The path in the looks like : ../../../../../../../../../ If I do a search and replace, all works perfectly. Can I do something to tell the interpreter the base path ? 2- Is there a way to set an --encoding flag to the cli ? I write my comments in french, but the files don't use BOM. So the interpreter thinks it's just normal iso encoding. 3- Do you plan to out the graphic UML generation for the future ? Thanks for your work. The html is really clearer now and faster also. Cheers. ----------- erixtekila http://blog.v-i-a.net/ From dave at badgers-in-foil.co.uk Wed Jun 15 13:42:20 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 15 Jun 2005 13:42:20 +0000 Subject: [as2api-dev] Minor problems with non windows binary In-Reply-To: <2779445b7de7285f143c38b4ebadc34e@dotgeek.org> References: <2779445b7de7285f143c38b4ebadc34e@dotgeek.org> Message-ID: <20050615134220.GA25582@vhost.badgers-in-foil.co.uk> On Wed, Jun 15, 2005 at 03:11:42PM +0200, erixtekila wrote: > I've just updated my version of as2api. > The new cli is really neat and work very well. > Great ! Cool! > I assume that is because I use commandline ruby call from the source > directory : > > cd /Applications/multiMedias/Flash_Utils/documentation/as2api/source > ruby ui/cli.rb \ > --classpath /Volumes/data/ericZone/Taf/source/_projet/src:/Volumes/data/ericZone/Taf/_Projets/eclipse/MMClasses \ > --output-dir /Volumes/data/ericZone/Taf/source/_projet/documentation \ > --title "Client" com.* net.* > > 1- All the paths in the outputted html are wrong. > When I click on a link in the frameset, it fails. > The path in the looks like : ../../../../../../../../../ > If I do a search and replace, all works perfectly. > Can I do something to tell the interpreter the base path ? Oops. I think it might be asuming that output-dir is a subdirectory of the working dir. I need to fix that, but in the meantime, maybe changing the invocation like so will help, cd /Volumes/data/ericZone/Taf/source/_projet as2api_dir=/Applications/multiMedias/Flash_Utils/documentation/as2api/source ruby -I $as2api_dir $as2api_dir/ui/cli.rb \ --classpath src:/Volumes/data/ericZone/Taf/_Projets/eclipse/MMClasses \ --output-dir documentation \ --title "Client" com.* net.* (I didn't actually test that -- excuse any typos) > 2- Is there a way to set an --encoding flag to the cli ? > I write my comments in french, but the files don't use BOM. > So the interpreter thinks it's just normal iso encoding. Yep, needs to get added. Will try to get to it (keep reminding me if I forget ;) > 3- Do you plan to out the graphic UML generation for the future ? Yes. Now that command line options are supported, this can return as a permanent feature (i.e. you'll have to add a --diagram flag on the commandline, so as not to cause problems for people who don't have graphviz installed). dave -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Fri Jun 17 16:12:09 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Fri, 17 Jun 2005 16:12:09 +0000 Subject: [as2api-dev] [CVS trunk] Link to another project Rostislav pointed out Message-ID:
      Commit in trunk/as2api on MAIN
      index.html+1127 -> 128
      Link to another project Rostislav pointed out
      

      trunk/as2api
      index.html 127 -> 128
      --- trunk/as2api/index.html	2005-06-15 07:43:51 UTC (rev 127)
      +++ trunk/as2api/index.html	2005-06-17 16:12:07 UTC (rev 128)
      @@ -151,6 +151,7 @@
      
             <li><a href="http://visiblearea.com/visdoc/">VisDoc</a></li>
             <li><a href="http://www.as2doc.com/">AS2Doc</a></li>
             <li><a href="http://asdt.sourceforge.net/">ASDT</a></li>
      
      +      <li><a href="http://www.senocular.com/projects/AS2Docular/">ASDocular</a></li>
      
           </ul>
       
         </body>
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Fri Jun 17 16:45:06 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Fri, 17 Jun 2005 16:45:06 +0000 Subject: [as2api-dev] [CVS trunk] Oh look, another AS2 doc tool I found on the osflash wiki Message-ID:
      Commit in trunk/as2api on MAIN
      index.html+1128 -> 129
      Oh look, another AS2 doc tool I found on the osflash wiki
      

      trunk/as2api
      index.html 128 -> 129
      --- trunk/as2api/index.html	2005-06-17 16:12:07 UTC (rev 128)
      +++ trunk/as2api/index.html	2005-06-17 16:45:04 UTC (rev 129)
      @@ -152,6 +152,7 @@
      
             <li><a href="http://www.as2doc.com/">AS2Doc</a></li>
             <li><a href="http://asdt.sourceforge.net/">ASDT</a></li>
             <li><a href="http://www.senocular.com/projects/AS2Docular/">ASDocular</a></li>
      
      +      <li><a href="http://icube.freezope.org/acid/">Acid</a></li>
      
           </ul>
       
         </body>
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 19 12:11:49 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 19 Jun 2005 12:11:49 +0000 Subject: [as2api-dev] [CVS trunk] Shift stuff around to make output-dir work properly when it's outside $PWD. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+108-117129 -> 130
      ui/cli.rb+1-1129 -> 130
      +109-118
      2 modified files
      Shift stuff around to make output-dir work properly when it's outside $PWD.
      Kills off the last two global vars in html_output.rb -- yay!
      

      trunk/as2api
      html_output.rb 129 -> 130
      --- trunk/as2api/html_output.rb	2005-06-17 16:45:04 UTC (rev 129)
      +++ trunk/as2api/html_output.rb	2005-06-19 12:11:48 UTC (rev 130)
      @@ -5,14 +5,13 @@
      
       
       
       def stylesheet(output_dir)
      
      -  in_subdir(output_dir) do
      -    name = "style.css"
      
      +  name = "style.css"
      
       
      
      -    # avoid overwriting a (possibly modified) existing stylesheet
      -    return if FileTest.exist?(File.join($path, name))
      
      +  # avoid overwriting a (possibly modified) existing stylesheet
      +  return if FileTest.exist?(File.join(output_dir, name))
      
       
      
      -    write_file(name) do |out|
      -      out.print <<-HERE
      
      +  write_file(output_dir, name) do |out|
      +    out.print <<-HERE
      
       h1, h2, h3, h4 th {
       	font-family: sans-serif;
       }
      
      @@ -110,88 +109,42 @@
      
       .diagram {
       	text-align: center;
       }
      
      -      HERE
      -    end
      
      +    HERE
      
         end
       end
       
      
      -def link_for_type(type)
      -  base_path(type.qualified_name.gsub(/\./, "/")+".html")
      -end
      
       
      
      -def link_type(out, type, qualified=false)
      -  href = link_for_type(type)
      -  if type.instance_of?(ASInterface)
      -    attr_class = "interface_name"
      -    attr_title = "Interface #{type.qualified_name}"
      -  else
      -    attr_class = "class_name"
      -    attr_title = "Class #{type.qualified_name}"
      
      +def ensure_dir(path)
      +  path_components = path.split(File::SEPARATOR)
      +  base_path = nil
      +  if path_components.first == ""
      +    path_components.shift
      +    base_path = "/"
      
         end
      
      -  if qualified
      -    content = type.qualified_name
      -  else
      -    content = type.unqualified_name
      -  end
      -  out.html_a(content, {"href"=>href,
      -		       "class"=>attr_class,
      -		       "title"=>attr_title})
      -end
      -
      -
      -def link_for_method(method)
      -  return "#{link_for_type(method.containing_type)}#method_#{method.name}"
      -end
      -
      -def link_method(out, method)
      -  out.html_a("href"=>link_for_method(method)) do
      -    out.pcdata(method.name)
      -    out.pcdata("()")
      -  end
      -end
      -
      -$base_path = ""
      -$path = ""
      -
      -def base_path(file)
      -  "#{$base_path}#{file}"
      -end
      -
      -def in_subdir(path)
      -  save_path = $path
      -  save_base_path = $base_path.dup
      -  path = path.split(File::SEPARATOR)
      -  if path.first == ""
      -    path.shift
      -    $path = "/"
      -  end
      -  path.each do |part|
      -    if $path == ""
      -      $path = part
      
      +  path_components.each do |part|
      +    if base_path.nil?
      +      base_path = part
      
           else
      
      -      $base_path << ".."+File::SEPARATOR
      -      $path = File.join($path, part)
      
      +      base_path = File.join(base_path, part)
      
           end
      
      -    unless FileTest.exist?($path)
      -      Dir.mkdir($path)
      
      +    unless FileTest.exist?(base_path)
      +      Dir.mkdir(base_path)
      
           end
         end
      
      -  yield
      -  $path = save_path
      -  $base_path = save_base_path
      
       end
       
      
      -def write_file(name)
      -  File.open(File.join($path, name), "w") do |io|
      
      +def write_file(path, name)
      +  ensure_dir(path)
      +  name = File.join(path, name)
      +  File.open(name, "w") do |io|
      
           yield io
         end
       end
       
      
      -def create_page(page)
      -  in_subdir(page.path_name) do
      -    write_file("#{page.base_name}.html") do |io|
      -      page.generate(XMLWriter.new(io))
      -    end
      
      +def create_page(output_dir, page)
      +  dir = File.join(output_dir, page.path_name)
      +  write_file(dir, "#{page.base_name}.html") do |io|
      +    page.generate(XMLWriter.new(io))
      
         end
       end
       
      
      @@ -217,7 +170,7 @@
      
       class Page
         include XHTMLWriter
       
      
      -  def initialize(path_name, base_name)
      
      +  def initialize(base_name, path_name=nil)
      
           @path_name = path_name
           @base_name = base_name
           @encoding = "iso-8859-1"
      
      @@ -277,6 +230,46 @@
      
             html_meta("name"=>"generator", "content"=>PROJECT_PAGE)
           end
         end
      
      +
      +  def link_for_type(type)
      +    base_path(type.qualified_name.gsub(/\./, "/")+".html")
      +  end
      +
      +  def link_type(type, qualified=false)
      +    href = link_for_type(type)
      +    if type.instance_of?(ASInterface)
      +      attr_class = "interface_name"
      +      attr_title = "Interface #{type.qualified_name}"
      +    else
      +      attr_class = "class_name"
      +      attr_title = "Class #{type.qualified_name}"
      +    end
      +    if qualified
      +      content = type.qualified_name
      +    else
      +      content = type.unqualified_name
      +    end
      +    html_a(content, {"href"=>href,
      +		     "class"=>attr_class,
      +		     "title"=>attr_title})
      +  end
      +
      +
      +  def link_for_method(method)
      +    return "#{link_for_type(method.containing_type)}#method_#{method.name}"
      +  end
      +
      +  def link_method(method)
      +    html_a("href"=>link_for_method(method)) do
      +      pcdata(method.name)
      +      pcdata("()")
      +    end
      +  end
      +
      +  def base_path(file)
      +    return file if @path_name.nil?
      +    ((".."+File::SEPARATOR) * @path_name.split(File::SEPARATOR).length) + file
      +  end
      
       end
       
       class BasicPage < Page
      
      @@ -300,8 +293,9 @@
      
       
       class TypePage < BasicPage
       
      
      -  def initialize(path_name, type)
      -    super(path_name, type.unqualified_name)
      
      +  def initialize(type)
      +    dir = type.package_name.gsub(/\./, "/")
      +    super(type.unqualified_name, dir)
      
           @type = type
           if @type.source_utf8
             @encoding = "utf-8"
      
      @@ -386,7 +380,7 @@
      
       	  if type.fields?
       	    html_h4 do
       	      pcdata("Inherited from ")
      
      -	      link_type(self, type)
      
      +	      link_type(type)
      
       	    end
       	    html_p("class"=>"extra_info") do
       	      list_fields(type, link_for_type(type))
      
      @@ -432,7 +426,7 @@
      
       	  if type.methods?
       	    html_h4 do
       	      pcdata("Inherited from ")
      
      -	      link_type(self, type)
      
      +	      link_type(type)
      
       	    end
       	    html_p("class"=>"extra_info") do
       	      list_methods(type, known_method_names, link_for_type(type))
      
      @@ -648,9 +642,9 @@
      
         def document_specified_by(method)
           html_h4("Specified By")
           html_p("class"=>"extra_info") do
      
      -      link_method(self, method)
      
      +      link_method(method)
      
             pcdata(" in ")
      
      -      link_type(self, method.containing_type, true)
      
      +      link_type(method.containing_type, true)
      
           end
         end
       
      
      @@ -763,7 +757,7 @@
      
       
         def link_type_proxy(type_proxy, qualified=false)
           if type_proxy.resolved? && type_proxy.resolved_type.document?
      
      -      link_type(self, type_proxy.resolved_type, qualified)
      
      +      link_type(type_proxy.resolved_type, qualified)
      
           else
             if type_proxy.resolved?
       	if type_proxy.resolved_type.instance_of?(ASInterface)
      
      @@ -872,8 +866,9 @@
      
       
       class PackageIndexPage < BasicPage
       
      
      -  def initialize(path_name, package)
      -    super(path_name, "package-summary")
      
      +  def initialize(package)
      +    dir = package_dir_for(package)
      +    super("package-summary", dir)
      
           @package = package
           @title = "Package #{package_display_name_for(@package)} API Documentation"
         end
      
      @@ -944,8 +939,9 @@
      
       
       class PackageFramePage < Page
       
      
      -  def initialize(path_name, package)
      -    super(path_name, "package-frame")
      
      +  def initialize(package)
      +    dir = package_dir_for(package)
      +    super("package-frame", dir)
      
           @package = package
           @title = "Package #{package_display_name_for(@package)} API Naviation"
           @doctype_id = :transitional
      
      @@ -988,8 +984,8 @@
      
       end
       
       class OverviewPage < BasicPage
      
      -  def initialize(path_name, type_agregator)
      -    super(path_name, "overview-summary")
      
      +  def initialize(type_agregator)
      +    super("overview-summary")
      
           @type_agregator = type_agregator
           @title = "API Overview"
         end
      
      @@ -1038,8 +1034,8 @@
      
       
       class OverviewFramePage < Page
       
      
      -  def initialize(path_name, type_agregator)
      -    super(path_name, "overview-frame")
      
      +  def initialize(type_agregator)
      +    super("overview-frame")
      
           @type_agregator = type_agregator
           @title = "API Overview"
           @doctype_id = :transitional
      
      @@ -1075,11 +1071,9 @@
      
         #          must have access to that type's source in order to compile?
         #          (In theory, this file will allow javadoc to link to ActionScript
         #          classes, so maybe keep it just for that.)
      
      -  in_subdir(path_name) do
      -    write_file("package-list") do |out|
      -      type_agregator.each_package do |package|
      -	out.puts(package.name) unless package.name == ""
      -      end
      
      +  write_file(path_name, "package-list") do |out|
      +    type_agregator.each_package do |package|
      +      out.puts(package.name) unless package.name == ""
      
           end
         end
       end
      
      @@ -1087,8 +1081,8 @@
      
       
       class AllTypesFramePage < Page
       
      
      -  def initialize(path_name, type_agregator)
      -    super(path_name, "all-types-frame")
      
      +  def initialize(type_agregator)
      +    super("all-types-frame")
      
           @type_agregator = type_agregator
           @doctype_id = :transitional
         end
      
      @@ -1122,8 +1116,8 @@
      
       
       class FramesetPage < Page
       
      
      -  def initialize(path_name)
      -    super(path_name, "frameset")
      
      +  def initialize
      +    super("frameset")
      
           @doctype_id = :frameset
         end
       
      
      @@ -1167,7 +1161,7 @@
      
         end
       
         def link(out)
      
      -    link_type(out, @astype)
      
      +    out.link_type(@astype)
      
           out.pcdata(" in package ")
           out.html_a(@astype.package_name, {"href"=>"../" + @astype.package_name.gsub(".", "/") + "/package-summary.html"})
         end
      
      @@ -1186,26 +1180,26 @@
      
       
       class MethodIndexTerm < MemberIndexTerm
         def link(out)
      
      -    link_method(out, @asmember)
      
      +    out.link_method(@asmember)
      
           out.pcdata(" method in ")
      
      -    link_type(out, @astype, true)
      
      +    out.link_type(@astype, true)
      
         end
       end
       
       class FieldIndexTerm < MemberIndexTerm
         def link(out)
      
      -    href_prefix = link_for_type(@astype)
      
      +    href_prefix = out.link_for_type(@astype)
      
           out.html_a("href"=>"#{href_prefix}#field_#{@asmember.name}") do
             out.pcdata(@asmember.name)
           end
           out.pcdata(" field in ")
      
      -    link_type(out, @astype, true)
      
      +    out.link_type(@astype, true)
      
         end
       end
       
       class IndexPage < BasicPage
      
      -  def initialize(path_name, type_agregator)
      -    super(path_name, "index")
      
      +  def initialize(type_agregator)
      +    super("index", "index-files")
      
           @type_agregator = type_agregator
           @title = "Alphabetical Index"
         end
      
      @@ -1266,28 +1260,25 @@
      
       def make_page_list(conf, type_agregator)
         list = []
       
      
      -  list << FramesetPage.new(conf.output_dir)
      -  list << OverviewPage.new(conf.output_dir, type_agregator)
      -  list << OverviewFramePage.new(conf.output_dir, type_agregator)
      -  list << AllTypesFramePage.new(conf.output_dir, type_agregator)
      
      +  list << FramesetPage.new()
      +  list << OverviewPage.new(type_agregator)
      +  list << OverviewFramePage.new(type_agregator)
      +  list << AllTypesFramePage.new(type_agregator)
      
       
         # packages..
         type_agregator.each_package do |package|
      
      -    dir = File.join(conf.output_dir, package_dir_for(package))
      -    list << PackageIndexPage.new(dir, package)
      -    list << PackageFramePage.new(dir, package)
      
      +    list << PackageIndexPage.new(package)
      +    list << PackageFramePage.new(package)
      
         end
       
         # types..
         type_agregator.each_type do |type|
           if type.document?
      
      -      dir = File.join(conf.output_dir, type.package_name.gsub(/\./, "/"))
      -      list << TypePage.new(dir, type)
      
      +      list << TypePage.new(type)
      
           end
         end
       
      
      -  dir = File.join(conf.output_dir, "index-files")
      -  list << IndexPage.new(dir, type_agregator)
      
      +  list << IndexPage.new(type_agregator)
      
       
         list
       end
      
      @@ -1297,7 +1288,7 @@
      
           list.each_with_index do |page, index|
             page.title_extra = conf.title
             conf.progress_listener.generate_page(index, page)
      
      -      create_page(page)
      
      +      create_page(conf.output_dir, page)
      
           end
         end
       end
      

      trunk/as2api/ui
      cli.rb 129 -> 130
      --- trunk/as2api/ui/cli.rb	2005-06-17 16:45:04 UTC (rev 129)
      +++ trunk/as2api/ui/cli.rb	2005-06-19 12:11:48 UTC (rev 130)
      @@ -86,7 +86,7 @@
      
           opts.each do |opt, arg|
             case opt
       	when "--output-dir"
      
      -	  conf.output_dir = arg
      
      +	  conf.output_dir = File.expand_path(arg)
      
       	when "--classpath"
       	  conf.classpath.concat(arg.split(File::PATH_SEPARATOR))
       	when "--title"
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 19 12:30:51 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 19 Jun 2005 12:30:51 +0000 Subject: [as2api-dev] [CVS trunk] Add command line option for specifying the input files' encoding. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+7-4130 -> 131
      ui/cli.rb+8-2130 -> 131
      +15-6
      2 modified files
      Add command line option for specifying the input files' encoding.
      

      trunk/as2api
      html_output.rb 130 -> 131
      --- trunk/as2api/html_output.rb	2005-06-19 12:11:48 UTC (rev 130)
      +++ trunk/as2api/html_output.rb	2005-06-19 12:30:51 UTC (rev 131)
      @@ -173,7 +173,7 @@
      
         def initialize(base_name, path_name=nil)
           @path_name = path_name
           @base_name = base_name
      
      -    @encoding = "iso-8859-1"
      
      +    @encoding = nil
      
           @doctype_id = :strict
           @title = nil
           @title_extra = nil
      
      @@ -196,7 +196,11 @@
      
       
         def generate(xml_writer)
           @io = xml_writer
      
      -    pi("xml version=\"1.0\" encoding=\"#{encoding}\"") unless encoding.nil?
      
      +    if encoding.nil?
      +      pi("xml version=\"1.0\"")
      +    else
      +      pi("xml version=\"1.0\" encoding=\"#{encoding}\"")
      +    end
      
           case doctype_id
           # FIXME: push this code down into XHTMLWriter, and have it switch the
           # allowed elements depending on the value passed at construction
      
      @@ -299,8 +303,6 @@
      
           @type = type
           if @type.source_utf8
             @encoding = "utf-8"
      
      -    else
      -      @encoding = "iso-8859-1"
      
           end
           @title = type.qualified_name
         end
      
      @@ -1287,6 +1289,7 @@
      
         conf.progress_listener.generating_pages(list.length) do
           list.each_with_index do |page, index|
             page.title_extra = conf.title
      
      +      page.encoding = conf.input_encoding
      
             conf.progress_listener.generate_page(index, page)
             create_page(conf.output_dir, page)
           end
      

      trunk/as2api/ui
      cli.rb 130 -> 131
      --- trunk/as2api/ui/cli.rb	2005-06-19 12:11:48 UTC (rev 130)
      +++ trunk/as2api/ui/cli.rb	2005-06-19 12:30:51 UTC (rev 131)
      @@ -7,7 +7,8 @@
      
                         :classpath,
       		  :package_filters,
       		  :title,
      
      -		  :progress_listener)
      
      +		  :progress_listener,
      +		  :input_encoding)
      
       
       SourceFile = Struct.new(:prefix, :suffix)
       
      
      @@ -76,7 +77,8 @@
      
             [ "--output-dir", "-d", GetoptLong::REQUIRED_ARGUMENT ],
             [ "--classpath",        GetoptLong::REQUIRED_ARGUMENT ],
             [ "--title",            GetoptLong::REQUIRED_ARGUMENT ],
      
      -      [ "--progress",         GetoptLong::NO_ARGUMENT ]
      
      +      [ "--progress",         GetoptLong::NO_ARGUMENT ],
      +      [ "--encoding",         GetoptLong::REQUIRED_ARGUMENT ]
      
           )
       
           conf = Conf.new
      
      @@ -96,6 +98,8 @@
      
       	  exit(0)
       	when "--progress"
       	  conf.progress_listener = VerboseProgressListener.new
      
      +	when "--encoding"
      +	  conf.input_encoding = arg
      
             end
           end
           if ARGV.empty?
      
      @@ -201,6 +205,8 @@
      
       	Print feedback showing how far tasks have progressed
         --title <text>
               Put the given text into the titles of generated HTML pages
      
      +  --encoding <name>
      +        The encoding of the source files to be parsed.
      
           END
         end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 19 17:24:59 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 19 Jun 2005 17:24:59 +0000 Subject: [as2api-dev] [CVS trunk] Try harder to resolve imported classes outside the documented set Message-ID:
      Commit in trunk/as2api on MAIN
      api_loader.rb+1131 -> 132
      Try harder to resolve imported classes outside the documented set
      

      trunk/as2api
      api_loader.rb 131 -> 132
      --- trunk/as2api/api_loader.rb	2005-06-19 12:30:51 UTC (rev 131)
      +++ trunk/as2api/api_loader.rb	2005-06-19 17:24:58 UTC (rev 132)
      @@ -458,6 +458,7 @@
      
           importer = type.import_manager
           importer.each_type do |type_name|
             import_type = local_namespace[type_name.join(".")]
      
      +      import_type = maybe_parse_external_definition(TypeProxy.new(type, type_name.join('.'))) unless import_type
      
             if import_type
       	local_namespace[type_name.last.body] = import_type
             else
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 19 17:28:05 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 19 Jun 2005 17:28:05 +0000 Subject: [as2api-dev] [CVS trunk] Avoid linking to things which we aren't generating documentation for. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+18-5132 -> 133
      Avoid linking to things which we aren't generating documentation for.
      

      trunk/as2api
      html_output.rb 132 -> 133
      --- trunk/as2api/html_output.rb	2005-06-19 17:24:58 UTC (rev 132)
      +++ trunk/as2api/html_output.rb	2005-06-19 17:28:04 UTC (rev 133)
      @@ -253,9 +253,13 @@
      
           else
             content = type.unqualified_name
           end
      
      -    html_a(content, {"href"=>href,
      -		     "class"=>attr_class,
      -		     "title"=>attr_title})
      
      +    if type.document?
      +      html_a(content, {"href"=>href,
      +		       "class"=>attr_class,
      +		       "title"=>attr_title})
      +    else
      +      pcdata(content)
      +    end
      
         end
       
       
      
      @@ -264,7 +268,12 @@
      
         end
       
         def link_method(method)
      
      -    html_a("href"=>link_for_method(method)) do
      
      +    if method.containing_type.document?
      +      html_a("href"=>link_for_method(method)) do
      +	pcdata(method.name)
      +	pcdata("()")
      +      end
      +    else
      
             pcdata(method.name)
             pcdata("()")
           end
      
      @@ -447,7 +456,11 @@
      
           methods.each_with_index do |method, index|
             known_method_names << method.name
             pcdata(", ") if index > 0
      
      -      html_a("href"=>"#{href_prefix}#method_#{method.name}") do
      
      +      if type.document?
      +	html_a("href"=>"#{href_prefix}#method_#{method.name}") do
      +	  pcdata(method.name+"()")
      +	end
      +      else
      
       	pcdata(method.name+"()")
             end
           end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 20 07:40:53 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 20 Jun 2005 07:40:53 +0000 Subject: [as2api-dev] [CVS trunk] Have @see and {@link} work better. We now allow links to members Message-ID:
      Commit in trunk/as2api on MAIN
      doc_comment.rb+19-6133 -> 134
      html_output.rb+27-1133 -> 134
      +46-7
      2 modified files
      Have @see and {@link} work better.  We now allow links to members
      of this type, and other types, using the '#prop' / '#meth()' syntax of JavaDoc.
      There is still room for improvement in the implementation.
      

      trunk/as2api
      doc_comment.rb 133 -> 134
      --- trunk/as2api/doc_comment.rb	2005-06-19 17:28:04 UTC (rev 133)
      +++ trunk/as2api/doc_comment.rb	2005-06-20 07:40:51 UTC (rev 134)
      @@ -133,12 +133,13 @@
      
       
       
       class LinkTag
      
      -  def initialize(target, text)
      
      +  def initialize(target, member, text)
      
           @target = target
      
      +    @member = member
      
           @text = text
         end
       
      
      -  attr_accessor :target, :text
      
      +  attr_accessor :target, :member, :text
      
       end
       
       
      
      @@ -189,9 +190,21 @@
      
         if input.text =~ /^([^ ]+(?:\([^\)]*\))?)\s*/
           target = $1
           text = $'
      
      -    type_proxy = input.type_resolver.resolve(target, input.lineno)
      -    return LinkTag.new(type_proxy, text)
      -else
      
      +    # TODO: need a MemberProxy (and maybe Method+Field subclasses) with similar
      +    #       role to TypeProxy, to simplify this, and output_doccomment_inlinetag
      +    if target =~ /([^#]*)#(.*)/
      +      type_name = $1
      +      member_name = $2
      +    else
      +      type_name = target
      +      member_name = nil
      +    end
      +    if type_name == ""
      +      type_proxy = nil
      +    else
      +      type_proxy = input.type_resolver.resolve(type_name, input.lineno)
      +    end
      +    return LinkTag.new(type_proxy, member_name, text)
      
         end
         return nil
       end
      
      @@ -340,7 +353,7 @@
      
       	  end
             end
           else
      
      -      $stderr.puts "@see tag didn't handle extra line #{input.text.inspect}"
      
      +      @data.add_inline(input.text)
      
           end
         end
       end
      

      trunk/as2api
      html_output.rb 133 -> 134
      --- trunk/as2api/html_output.rb	2005-06-19 17:28:04 UTC (rev 133)
      +++ trunk/as2api/html_output.rb	2005-06-20 07:40:51 UTC (rev 134)
      @@ -682,7 +682,33 @@
      
           if inline.is_a?(String)
             pcdata(inline)
           elsif inline.is_a?(LinkTag)
      
      -      link_type_proxy(inline.target)
      
      +      if inline.target && inline.member
      +	if inline.target.resolved?
      +	  href = link_for_type(inline.target.resolved_type)
      +	  if inline.member =~ /\(/
      +	    target = "#method_#{$`}"
      +	  else
      +	    target = "#field_#{inline.member}"
      +	  end
      +	  href << target
      +	  html_a("href"=>href) do
      +	    pcdata("#{inline.target.name}.#{inline.member}")
      +	  end
      +	else
      +	  pcdata("#{inline.target.name}##{inline.member}")
      +	end
      +      elsif inline.target
      +	link_type_proxy(inline.target)
      +      else
      +	if inline.member =~ /\(/
      +	  target = "#method_#{$`}"
      +	else
      +	  target = "#field_#{inline.member}"
      +	end
      +	html_a("href"=>target) do
      +	  pcdata(inline.member)
      +	end
      +      end
      
           else
             html_em(inline.inspect)
           end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 21 20:56:10 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 21 Jun 2005 20:56:10 +0000 Subject: [as2api-dev] [CVS trunk] Return of inheritance diagrams as a permanent feature. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+138-3134 -> 135
      ui/cli.rb+18-2134 -> 135
      +156-5
      2 modified files
      Return of inheritance diagrams as a permanent feature.
      
      By adding --draw-diagrams to the command line options, each package index page
      will include a diagram showing inheritance relationships between interfaces and
      a diagram showing inheritance relationships between classes.  The classes and
      interfaces in the diagrams are hyperlinks to the 'detail' pages for the
      respective types.
      
      The diagram generation requires 'dot', a part of the Graphviz package, and
      by default it is assumed that 'dot' is available in the system search PATH.
      If this is not the case, the program file to be used can be specified with the
      new --dot-exe option, e.g.
      
       ... --dot-exe /home/dave/graphviz/bin/dot ...
      
       Error handling isn't all that great at the moment (if 'dot' is missing, the
       diagrams are absent, but as2api is silent).
      

      trunk/as2api
      html_output.rb 134 -> 135
      --- trunk/as2api/html_output.rb	2005-06-20 07:40:51 UTC (rev 134)
      +++ trunk/as2api/html_output.rb	2005-06-21 20:56:07 UTC (rev 135)
      @@ -2,8 +2,8 @@
      
       require 'xmlwriter'
       require 'xhtmlwriter'
       require 'doc_comment'
      
      +require 'rexml/document'
      
       
      
      -
      
       def stylesheet(output_dir)
         name = "style.css"
       
      
      @@ -907,11 +907,12 @@
      
       
       class PackageIndexPage < BasicPage
       
      
      -  def initialize(package)
      
      +  def initialize(conf, package)
      
           dir = package_dir_for(package)
           super("package-summary", dir)
           @package = package
           @title = "Package #{package_display_name_for(@package)} API Documentation"
      
      +    @conf = conf
      
         end
       
         def generate_body_content
      
      @@ -956,6 +957,12 @@
      
       	  end
       	end
             end
      
      +
      +    if @conf.draw_diagrams
      +      draw_package_diagrams
      +      class_diagram
      +      interface_diagram
      +    end
      
         end
       
         def navigation
      
      @@ -975,6 +982,134 @@
      
           end
         end
       
      
      +  def class_diagram
      +    dir = File.join(@conf.output_dir, path_name)
      +    if FileTest.exists?(File.join(dir, "package-classes.png"))
      +      html_h1("Class Inheritance Diagram")
      +      html_div("class"=>"diagram") do
      +	if FileTest.exists?(File.join(dir, "package-classes.cmapx"))
      +	  map = true
      +	  File.open(File.join(dir, "package-classes.cmapx")) do |io|
      +	    copy_xml(io, @io)
      +	  end
      +	else
      +	  map = false
      +	end
      +	attr = {"src"=>"package-classes.png"}
      +	attr["usemap"] = "class_diagram" if map
      +        html_img(attr)
      +      end
      +    end
      +  end
      +
      +  def interface_diagram
      +    dir = File.join(@conf.output_dir, path_name)
      +    if FileTest.exists?(File.join(dir, "package-interfaces.png"))
      +      html_h1("Interface Inheritance Diagram")
      +      html_div("class"=>"diagram") do
      +	if FileTest.exists?(File.join(dir, "package-interfaces.cmapx"))
      +	  map = true
      +	  File.open(File.join(dir, "package-interfaces.cmapx")) do |io|
      +	    copy_xml(io, @io)
      +	  end
      +	else
      +	  map = false
      +	end
      +	attr = {"src"=>"package-interfaces.png"}
      +	attr["usemap"] = "interface_diagram" if map
      +        html_img(attr)
      +      end
      +    end
      +  end
      +
      +  def draw_package_diagrams
      +    asclasses = @package.classes
      +    dir = File.join(@conf.output_dir, path_name)
      +    unless asclasses.empty?
      +      write_file(dir, "classes.dot") do |io|
      +	io.puts("strict digraph class_diagram {")
      +	  io.puts("  rankdir=LR;")
      +	   asclasses.each do |astype|
      +	    io.puts("  #{astype.unqualified_name}[")
      +	    io.puts("    label=\"#{astype.unqualified_name}\",")
      +	    io.puts("    URL=\"#{astype.unqualified_name}.html\",")
      +	    io.puts("    tooltip=\"#{astype.qualified_name}\",")
      +	    io.puts("    fontname=\"Times-Italic\",") if astype.is_a?(ASInterface)
      +	    io.puts("    shape=\"record\"")
      +	    io.puts("  ];")
      +	  end
      +	  asclasses.each do |astype|
      +	    parent = astype.extends
      +	    if !parent.nil? && parent.resolved?
      +	      if parent.resolved_type.package_name == @package.name
      +		io.puts("  #{parent.resolved_type.unqualified_name} -> #{astype.unqualified_name};")
      +	      end
      +	    end
      +	  end
      +	io.puts("}")
      +      end
      +      system(@conf.dot_exe, "-Tpng", "-o", File.join(dir, "package-classes.png"), File.join(dir, "classes.dot"))
      +      system(@conf.dot_exe, "-Tcmapx", "-o", File.join(dir, "package-classes.cmapx"), File.join(dir, "classes.dot"))
      +      #File.delete(File.join(dir, "types.dot"))
      +    end
      +
      +    asinterfaces = @package.interfaces
      +    unless asinterfaces.empty?
      +      write_file(dir, "interfaces.dot") do |io|
      +	io.puts("strict digraph interface_diagram {")
      +	  io.puts("  rankdir=LR;")
      +	  asinterfaces.each do |astype|
      +	    io.puts("  #{astype.unqualified_name}[")
      +	    io.puts("    label=\"#{astype.unqualified_name}\",")
      +	    io.puts("    URL=\"#{astype.unqualified_name}.html\",")
      +	    io.puts("    tooltip=\"#{astype.qualified_name}\",")
      +	    io.puts("    fontname=\"Times-Italic\",") if astype.is_a?(ASInterface)
      +	    io.puts("    shape=\"record\"")
      +	    io.puts("  ];")
      +	  end
      +	  asinterfaces.each do |astype|
      +	    parent = astype.extends
      +	    if !parent.nil? && parent.resolved?
      +	      if parent.resolved_type.package_name == @package.name
      +		io.puts("  #{parent.resolved_type.unqualified_name} -> #{astype.unqualified_name};")
      +	      end
      +	    end
      +	  end
      +	io.puts("}")
      +      end
      +      system(@conf.dot_exe, "-Tpng", "-o", File.join(dir, "package-interfaces.png"), File.join(dir, "interfaces.dot"))
      +      system(@conf.dot_exe, "-Tcmapx", "-o", File.join(dir, "package-interfaces.cmapx"), File.join(dir, "interfaces.dot"))
      +      #File.delete(File.join(dir, "types.dot"))
      +    end
      +  end
      +
      +  class XMLAdapter
      +    def initialize(out)
      +      @out = out
      +    end
      +
      +    def tag_start(name, attrs)
      +      attr_map = {}
      +      attrs.each do |el|
      +	attr_map[el[0]] = el[1]
      +      end
      +      @out.start_tag(name, attr_map)
      +    end
      +
      +    def tag_end(name)
      +      @out.end_tag(name)
      +    end
      +
      +    def text(text)
      +      @out.pcdata(text)
      +    end
      +  end
      +
      +  def copy_xml(io, out)
      +    listener = XMLAdapter.new(out)
      +    REXML::Document.parse_stream(io, listener)
      +  end
      +
      
       end
       
       
      
      @@ -1308,7 +1443,7 @@
      
       
         # packages..
         type_agregator.each_package do |package|
      
      -    list << PackageIndexPage.new(package)
      
      +    list << PackageIndexPage.new(conf, package)
      
           list << PackageFramePage.new(package)
         end
       
      

      trunk/as2api/ui
      cli.rb 134 -> 135
      --- trunk/as2api/ui/cli.rb	2005-06-20 07:40:51 UTC (rev 134)
      +++ trunk/as2api/ui/cli.rb	2005-06-21 20:56:07 UTC (rev 135)
      @@ -8,7 +8,9 @@
      
       		  :package_filters,
       		  :title,
       		  :progress_listener,
      
      -		  :input_encoding)
      
      +		  :input_encoding,
      +		  :draw_diagrams,
      +		  :dot_exe)
      
       
       SourceFile = Struct.new(:prefix, :suffix)
       
      
      @@ -78,12 +80,16 @@
      
             [ "--classpath",        GetoptLong::REQUIRED_ARGUMENT ],
             [ "--title",            GetoptLong::REQUIRED_ARGUMENT ],
             [ "--progress",         GetoptLong::NO_ARGUMENT ],
      
      -      [ "--encoding",         GetoptLong::REQUIRED_ARGUMENT ]
      
      +      [ "--encoding",         GetoptLong::REQUIRED_ARGUMENT ],
      +      [ "--draw-diagrams",    GetoptLong::NO_ARGUMENT ],
      +      [ "--dot-exe",          GetoptLong::REQUIRED_ARGUMENT ]
      
           )
       
           conf = Conf.new
           conf.classpath = []
           conf.package_filters = []
      
      +    conf.draw_diagrams = false
      +    conf.dot_exe = "dot"  #  i.e. assume 'dot' is in our PATH
      
       
           opts.each do |opt, arg|
             case opt
      
      @@ -100,6 +106,10 @@
      
       	  conf.progress_listener = VerboseProgressListener.new
       	when "--encoding"
       	  conf.input_encoding = arg
      
      +	when "--draw-diagrams"
      +	  conf.draw_diagrams = true
      +	when "--dot-exe"
      +	  conf.dot_exe = arg
      
             end
           end
           if ARGV.empty?
      
      @@ -207,6 +217,12 @@
      
               Put the given text into the titles of generated HTML pages
         --encoding <name>
               The encoding of the source files to be parsed.
      
      +  --draw-diagrams
      +        Causes class/interface inheritance diagrams to be generated for each
      +	package (requires that you have http://www.graphviz.org/).
      +  --dot-exe <filename>
      +        Specify the location of the 'dot' tool from Graphviz, if it is not
      +        available via the standard PATH.
      
           END
         end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 21 21:21:14 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 21 Jun 2005 21:21:14 +0000 Subject: [as2api-dev] [CVS trunk] Allow HTML in doc-comments to appear as HTML in output (without encoding). Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+2-1135 -> 136
      xhtmlwriter.rb+4135 -> 136
      xmlwriter.rb+4135 -> 136
      +10-1
      3 modified files
      Allow HTML in doc-comments to appear as HTML in output (without encoding).
      

      trunk/as2api
      html_output.rb 135 -> 136
      --- trunk/as2api/html_output.rb	2005-06-21 20:56:07 UTC (rev 135)
      +++ trunk/as2api/html_output.rb	2005-06-21 21:21:13 UTC (rev 136)
      @@ -680,7 +680,8 @@
      
       
         def output_doccomment_inlinetag(inline)
           if inline.is_a?(String)
      
      -      pcdata(inline)
      
      +      passthrough(inline)  # allow HTML through unabused (though I wish it were
      +                           # easy to require it be valid XHTML)
      
           elsif inline.is_a?(LinkTag)
             if inline.target && inline.member
       	if inline.target.resolved?
      

      trunk/as2api
      xhtmlwriter.rb 135 -> 136
      --- trunk/as2api/xhtmlwriter.rb	2005-06-21 20:56:07 UTC (rev 135)
      +++ trunk/as2api/xhtmlwriter.rb	2005-06-21 21:21:13 UTC (rev 136)
      @@ -128,6 +128,10 @@
      
           @io.doctype(name, syspub, public_id, system_id)
         end
       
      
      +  def passthrough(text)
      +    @io.passthrough(text)
      +  end
      +
      
         def xml; @io end
       end
       
      

      trunk/as2api
      xmlwriter.rb 135 -> 136
      --- trunk/as2api/xmlwriter.rb	2005-06-21 20:56:07 UTC (rev 135)
      +++ trunk/as2api/xmlwriter.rb	2005-06-21 21:21:13 UTC (rev 136)
      @@ -83,6 +83,10 @@
      
           @io.print("?>")
         end
       
      
      +  def passthrough(text)
      +    @io.print(text)
      +  end
      +
      
         private
         def chk_name(name)
           raise "bad character '#{$&}' in tag name #{name}" if name =~ /[<>& "']/
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 21 21:42:02 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 21 Jun 2005 21:42:02 +0000 Subject: [as2api-dev] [CVS trunk] Take care not to strip end-of-line sequences from doc-comments Message-ID:
      Commit in trunk/as2api on MAIN
      doc_comment.rb+5-4136 -> 137
      Take care not to strip end-of-line sequences from doc-comments
      so as not to break whitespace-preserving layouts (i.e. <pre>)
      

      trunk/as2api
      doc_comment.rb 136 -> 137
      --- trunk/as2api/doc_comment.rb	2005-06-21 21:21:13 UTC (rev 136)
      +++ trunk/as2api/doc_comment.rb	2005-06-21 21:42:01 UTC (rev 137)
      @@ -1,4 +1,5 @@
      
       
      
      +require 'strscan'
      
       
       class CommentInput
         def initialize(text, lineno, type_resolver)
      
      @@ -24,9 +25,9 @@
      
         def parse(input)
           data = CommentData.new
           @config.begin_comment(data)
      
      -    lines = input.text.split(/\n\r|\n|\r/)
      
      +    lines = StringScanner.new(input.text)
      
           lineno = input.lineno
      
      -    while text = lines.shift
      
      +    while text = lines.scan(/[^\n\r]*(?:\n\r|\n|\r)?/)
      
             parse_line(input.derive(strip_stars(text), lineno))
             lineno += 1
           end
      
      @@ -37,7 +38,7 @@
      
         private
       
         def strip_stars(text)
      
      -    text.sub(/\A\s*\**/, "").sub(/\s*\Z/, "")
      
      +    text.sub(/\A\s*\**/, "").sub(/[ \t]*\Z/, "")
      
         end
       
         def parse_line(input)
      
      @@ -257,7 +258,7 @@
      
       	  inline_parser.parse(@data, input.derive(tag_data))
       	end
       	text = $'
      
      -      elsif text =~ /\A.[^{]*/
      
      +      elsif text =~ /\A.[^{]*/m
      
       	add_text($&)
       	text = $'
             else
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 22 00:07:10 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 22 Jun 2005 00:07:10 +0000 Subject: [as2api-dev] [CVS trunk] Fix invalid docbook by inserting element, and keep FOP happy Message-ID:
      Commit in trunk/as2api on MAIN
      as2api-documentation.xml+12137 -> 138
      Fix invalid docbook by inserting <tgroup> element, and keep FOP happy
      by specifying column widths.
      

      trunk/as2api
      as2api-documentation.xml 137 -> 138
      --- trunk/as2api/as2api-documentation.xml	2005-06-21 21:42:01 UTC (rev 137)
      +++ trunk/as2api/as2api-documentation.xml	2005-06-22 00:07:04 UTC (rev 138)
      @@ -179,6 +179,9 @@
      
       	<title>Supported JavaDoc Features</title>
       
       	<informaltable>
      
      +	  <tgroup cols="2">
      +	  <colspec colnum="1" colname="col1" colwidth="1*"/>
      +          <colspec colnum="2" colname="col2" colwidth="3*"/>
      
       	  <thead>
       	    <row>
       	      <entry>Feature</entry>
      
      @@ -214,6 +217,7 @@
      
       	      <entry>Describe an exception thrown by a method</entry>
       	    </row>
       	  </tbody>
      
      +	  </tgroup>
      
       	</informaltable>
             </section>
       
      
      @@ -221,6 +225,9 @@
      
       	<title>Unsupported JavaDoc Features</title>
       
       	<informaltable>
      
      +	  <tgroup cols="2">
      +	  <colspec colnum="1" colname="col1" colwidth="1*"/>
      +          <colspec colnum="2" colname="col2" colwidth="3*"/>
      
       	  <thead>
       	    <row>
       	      <entry>Feature</entry>
      
      @@ -289,6 +296,7 @@
      
       	      <entry></entry>
       	    </row>
       	  </tbody>
      
      +	  </tgroup>
      
       	</informaltable>
             </section>
       
      
      @@ -296,6 +304,9 @@
      
       	<title>Unsupported ActionScript Features</title>
       
       	<informaltable>
      
      +	  <tgroup cols="2">
      +	  <colspec colnum="1" colname="col1" colwidth="1*"/>
      +          <colspec colnum="2" colname="col2" colwidth="3*"/>
      
       	  <thead>
       	    <row>
       	      <entry>Feature</entry>
      
      @@ -312,6 +323,7 @@
      
       	      <entry>attributes on types/members are not documented</entry>
       	    </row>
       	  </tbody>
      
      +	  </tgroup>
      
       	</informaltable>
             </section>
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 22 07:20:22 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 22 Jun 2005 07:20:22 +0000 Subject: [as2api-dev] [CVS trunk] Fix indentation of content Message-ID:
      Commit in trunk/as2api on MAIN
      as2api-documentation.xml+125-125138 -> 139
      Fix indentation of <tgroup> content
      

      trunk/as2api
      as2api-documentation.xml 138 -> 139
      --- trunk/as2api/as2api-documentation.xml	2005-06-22 00:07:04 UTC (rev 138)
      +++ trunk/as2api/as2api-documentation.xml	2005-06-22 07:20:21 UTC (rev 139)
      @@ -180,43 +180,43 @@
      
       
       	<informaltable>
       	  <tgroup cols="2">
      
      -	  <colspec colnum="1" colname="col1" colwidth="1*"/>
      -          <colspec colnum="2" colname="col2" colwidth="3*"/>
      -	  <thead>
      -	    <row>
      -	      <entry>Feature</entry>
      -	      <entry>Description</entry>
      -	    </row>
      -	  </thead>
      -	  <tbody>
      -	    <row>
      -	      <entry><link linkend="type_description">Type
      -	      Description</link></entry>
      -	      <entry>Describe a class or interface</entry>
      -	    </row>
      -	    <row>
      -	      <entry><link linkend="method_description">Method
      -	      Description</link></entry>
      -	      <entry>Describe a method of a class or interface</entry>
      -	    </row>
      -	    <row>
      -	      <entry><link linkend="param_tag"><literal>@param</literal></link></entry>
      -	      <entry>Describe a method parameter</entry>
      -	    </row>
      -	    <row>
      -	      <entry><link linkend="return_tag"><literal>@return</literal></link></entry>
      -	      <entry>Describe the value returned by a method</entry>
      -	    </row>
      -	    <row>
      -	      <entry><link linkend="see_tag"><literal>@see</literal></link></entry>
      -	      <entry>Partially supported. Link to additional
      -	      information.</entry>
      -	    </row>
      -	    <row>
      -	      <entry><link linkend="throws_tag"><literal>@throws</literal></link></entry>
      -	      <entry>Describe an exception thrown by a method</entry>
      -	    </row>
      -	  </tbody>
      
      +	    <colspec colnum="1" colname="col1" colwidth="1*"/>
      +	    <colspec colnum="2" colname="col2" colwidth="3*"/>
      +	    <thead>
      +	      <row>
      +		<entry>Feature</entry>
      +		<entry>Description</entry>
      +	      </row>
      +	    </thead>
      +	    <tbody>
      +	      <row>
      +		<entry><link linkend="type_description">Type
      +		Description</link></entry>
      +		<entry>Describe a class or interface</entry>
      +	      </row>
      +	      <row>
      +		<entry><link linkend="method_description">Method
      +		Description</link></entry>
      +		<entry>Describe a method of a class or interface</entry>
      +	      </row>
      +	      <row>
      +		<entry><link linkend="param_tag"><literal>@param</literal></link></entry>
      +		<entry>Describe a method parameter</entry>
      +	      </row>
      +	      <row>
      +		<entry><link linkend="return_tag"><literal>@return</literal></link></entry>
      +		<entry>Describe the value returned by a method</entry>
      +	      </row>
      +	      <row>
      +		<entry><link linkend="see_tag"><literal>@see</literal></link></entry>
      +		<entry>Partially supported. Link to additional
      +		information.</entry>
      +	      </row>
      +	      <row>
      +		<entry><link linkend="throws_tag"><literal>@throws</literal></link></entry>
      +		<entry>Describe an exception thrown by a method</entry>
      +	      </row>
      +	    </tbody>
      
       	  </tgroup>
       	</informaltable>
             </section>
      
      @@ -226,76 +226,76 @@
      
       
       	<informaltable>
       	  <tgroup cols="2">
      
      -	  <colspec colnum="1" colname="col1" colwidth="1*"/>
      -          <colspec colnum="2" colname="col2" colwidth="3*"/>
      -	  <thead>
      -	    <row>
      -	      <entry>Feature</entry>
      -	      <entry>Commentary</entry>
      -	    </row>
      -	  </thead>
      -	  <tbody>
      -	    <row>
      -	      <entry><literal>@author</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>{@code}</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>{@docRoot}</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>@depricated</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>@exception</literal></entry>
      -	      <entry><literal>@throws</literal> is supported, but this synonym is not, yet</entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>{@inheritDoc}</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>{@link}</literal></entry>
      -	      <entry>To be implemented soon-ish</entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>{@linkPlain}</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>{@literal}</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>@serial</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>@serialData</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>@serialField</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>@since</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>{@value}</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>@version</literal></entry>
      -	      <entry></entry>
      -	    </row>
      -	  </tbody>
      
      +	    <colspec colnum="1" colname="col1" colwidth="1*"/>
      +	    <colspec colnum="2" colname="col2" colwidth="3*"/>
      +	    <thead>
      +	      <row>
      +		<entry>Feature</entry>
      +		<entry>Commentary</entry>
      +	      </row>
      +	    </thead>
      +	    <tbody>
      +	      <row>
      +		<entry><literal>@author</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>{@code}</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>{@docRoot}</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>@depricated</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>@exception</literal></entry>
      +		<entry><literal>@throws</literal> is supported, but this synonym is not, yet</entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>{@inheritDoc}</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>{@link}</literal></entry>
      +		<entry>To be implemented soon-ish</entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>{@linkPlain}</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>{@literal}</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>@serial</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>@serialData</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>@serialField</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>@since</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>{@value}</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>@version</literal></entry>
      +		<entry></entry>
      +	      </row>
      +	    </tbody>
      
       	  </tgroup>
       	</informaltable>
             </section>
      
      @@ -305,24 +305,24 @@
      
       
       	<informaltable>
       	  <tgroup cols="2">
      
      -	  <colspec colnum="1" colname="col1" colwidth="1*"/>
      -          <colspec colnum="2" colname="col2" colwidth="3*"/>
      -	  <thead>
      -	    <row>
      -	      <entry>Feature</entry>
      -	      <entry>Commentary</entry>
      -	    </row>
      -	  </thead>
      -	  <tbody>
      -	    <row>
      -	      <entry><literal>#include "<replaceable>filename</replaceable>"</literal></entry>
      -	      <entry>includes are ignored</entry>
      -	    </row>
      -	    <row>
      -	      <entry><literal>[<replaceable>attributes</replaceable>]</literal></entry>
      -	      <entry>attributes on types/members are not documented</entry>
      -	    </row>
      -	  </tbody>
      
      +	    <colspec colnum="1" colname="col1" colwidth="1*"/>
      +	    <colspec colnum="2" colname="col2" colwidth="3*"/>
      +	    <thead>
      +	      <row>
      +		<entry>Feature</entry>
      +		<entry>Commentary</entry>
      +	      </row>
      +	    </thead>
      +	    <tbody>
      +	      <row>
      +		<entry><literal>#include "<replaceable>filename</replaceable>"</literal></entry>
      +		<entry>includes are ignored</entry>
      +	      </row>
      +	      <row>
      +		<entry><literal>[<replaceable>attributes</replaceable>]</literal></entry>
      +		<entry>attributes on types/members are not documented</entry>
      +	      </row>
      +	    </tbody>
      
       	  </tgroup>
       	</informaltable>
             </section>
      
      CVSspam 0.2.11
      From erixtekila at dotgeek.org Wed Jun 22 10:36:27 2005 From: erixtekila at dotgeek.org (erixtekila) Date: Wed, 22 Jun 2005 12:36:27 +0200 Subject: [as2api-dev] all good Message-ID: <8649ad7812247929fa58b3035d98f141@dotgeek.org> Hi David, The addition you've made are really welcomed ! They just=85 work. I've just a little issue with the font used for dot. (Mac users have =20 opentype, postscript and sometimes truetype) Error: Could not find/open font : Times-Italic in =20 ~/Library/Fonts:/Library/Fonts:/Network/Library/Fonts:/System/Library/=20= Fonts But perhaps you'll give the possibility to custom the font of dot in a =20= commandline switch later !? :) Thanks a bunch. ----------- erixtekila http://blog.v-i-a.net/= From dave at badgers-in-foil.co.uk Wed Jun 22 11:25:39 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 22 Jun 2005 11:25:39 +0000 Subject: [as2api-dev] all good In-Reply-To: <8649ad7812247929fa58b3035d98f141@dotgeek.org> References: <8649ad7812247929fa58b3035d98f141@dotgeek.org> Message-ID: <20050622112539.GA7285@vhost.badgers-in-foil.co.uk> On Wed, Jun 22, 2005 at 12:36:27PM +0200, erixtekila wrote: > I've just a little issue with the font used for dot. (Mac users have > opentype, postscript and sometimes truetype) > Error: Could not find/open font : Times-Italic in > ~/Library/Fonts:/Library/Fonts:/Network/Library/Fonts:/System/Library/ > Fonts > But perhaps you'll give the possibility to custom the font of dot in a > commandline switch later !? :) This font specification is only used for interfaces -- classes are left with the default font. This is for consistency with other parts of the documentation, where we try to present interface names in italic-type. Graphviz didn't have any way of specifing that kind of styling independantly of the font name, from what I recall. 'Times-Italic' was the first thing that seemed to do what I wanted, so I stuck with it. Maybe there's a font family that will work across more platforms? I see Helvetica-Oblique files knocking around on my Debian laptop -- not tried that with dot though...? dave -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Wed Jun 22 13:52:39 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 22 Jun 2005 13:52:39 +0000 Subject: [as2api-dev] [CVS trunk] I picked up a tip -- this appears to be a simpler way to scan a string Message-ID:
      Commit in trunk/as2api on MAIN
      doc_comment.rb+1-4139 -> 140
      I picked up a tip -- this appears to be a simpler way to scan a string
      

      trunk/as2api
      doc_comment.rb 139 -> 140
      --- trunk/as2api/doc_comment.rb	2005-06-22 07:20:21 UTC (rev 139)
      +++ trunk/as2api/doc_comment.rb	2005-06-22 13:52:36 UTC (rev 140)
      @@ -1,6 +1,4 @@
      
       
      
      -require 'strscan'
      -
      
       class CommentInput
         def initialize(text, lineno, type_resolver)
           @text = text
      
      @@ -25,9 +23,8 @@
      
         def parse(input)
           data = CommentData.new
           @config.begin_comment(data)
      
      -    lines = StringScanner.new(input.text)
      
           lineno = input.lineno
      
      -    while text = lines.scan(/[^\n\r]*(?:\n\r|\n|\r)?/)
      
      +    input.text.scan(/[^\n\r]*(?:\n\r|\n|\r)?/) do |text|
      
             parse_line(input.derive(strip_stars(text), lineno))
             lineno += 1
           end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Fri Jun 24 23:43:26 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Fri, 24 Jun 2005 23:43:26 +0000 Subject: [as2api-dev] [CVS trunk] Don't delay 'require' -- that makes it harder to use rubyscript2exe Message-ID:
      Commit in trunk/as2api on MAIN
      documenter.rb+1-1140 -> 141
      Don't delay 'require' -- that makes it harder to use rubyscript2exe
      

      trunk/as2api
      documenter.rb 140 -> 141
      --- trunk/as2api/documenter.rb	2005-06-22 13:52:36 UTC (rev 140)
      +++ trunk/as2api/documenter.rb	2005-06-24 23:43:24 UTC (rev 141)
      @@ -1,4 +1,5 @@
      
       
      
      +require 'find'
      
       require 'parse/lexer'  # TODO: remove this requirement
       require 'parse/as_io'
       require 'api_loader'
      
      @@ -35,7 +36,6 @@
      
       
       # lists the .as files in 'path', and it's subdirectories
       def each_source(path)
      
      -  require 'find'
      
         path = path.sub(/\/+$/, "")
         Find.find(path) do |f|
           base = File.basename(f)
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Fri Jun 24 23:57:35 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Fri, 24 Jun 2005 23:57:35 +0000 Subject: [as2api-dev] [CVS trunk] Any whitespace (not just a space character) must terminate a link-target. Message-ID:
      Commit in trunk/as2api on MAIN
      doc_comment.rb+1-1141 -> 142
      Any whitespace (not just a space character) must terminate a link-target.
      This change stops newlines, for instance, sneaking onto the end of what we're
      expecting to be a type-name.
      

      trunk/as2api
      doc_comment.rb 141 -> 142
      --- trunk/as2api/doc_comment.rb	2005-06-24 23:43:24 UTC (rev 141)
      +++ trunk/as2api/doc_comment.rb	2005-06-24 23:57:33 UTC (rev 142)
      @@ -185,7 +185,7 @@
      
       
       # creates a LinkTag inline
       def create_link(input)
      
      -  if input.text =~ /^([^ ]+(?:\([^\)]*\))?)\s*/
      
      +  if input.text =~ /^([^\s]+(?:\([^\)]*\))?)\s*/
      
           target = $1
           text = $'
           # TODO: need a MemberProxy (and maybe Method+Field subclasses) with similar
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sat Jun 25 00:06:50 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sat, 25 Jun 2005 00:06:50 +0000 Subject: [as2api-dev] [CVS trunk] Don't link to the fields of types we're not documenting Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+5-1142 -> 143
      Don't link to the fields of types we're not documenting
      

      trunk/as2api
      html_output.rb 142 -> 143
      --- trunk/as2api/html_output.rb	2005-06-24 23:57:33 UTC (rev 142)
      +++ trunk/as2api/html_output.rb	2005-06-25 00:06:50 UTC (rev 143)
      @@ -409,7 +409,11 @@
      
             next unless document_member?(field)
             pcdata(", ") if index > 0
             html_code do
      
      -	html_a("href"=>"#{href_prefix}#field_#{field.name}") do
      
      +	if type.document?
      +	  html_a("href"=>"#{href_prefix}#field_#{field.name}") do
      +	    pcdata(field.name)
      +	  end
      +	else
      
       	  pcdata(field.name)
       	end
             end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sat Jun 25 23:08:56 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sat, 25 Jun 2005 23:08:56 +0000 Subject: [as2api-dev] [CVS trunk] Trivial front-end script to launch ui/cli.rb Message-ID:
      Commit in trunk/as2api on MAIN
      as2api.rb+3added 144
      Trivial front-end script to launch ui/cli.rb
      

      trunk/as2api
      as2api.rb added at 144
      --- trunk/as2api/as2api.rb	2005-06-25 00:06:50 UTC (rev 143)
      +++ trunk/as2api/as2api.rb	2005-06-25 23:08:53 UTC (rev 144)
      @@ -0,0 +1,3 @@
      
      +#!/usr/bin/ruby -w
      +
      +require 'ui/cli'
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 26 13:40:16 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 26 Jun 2005 13:40:16 +0000 Subject: [as2api-dev] [CVS trunk] Delete logic from link_type_proxy() which link_type() can perform for us anyway.Also, include class/title attributes even for types which aren't hyperlinked. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+4-11144 -> 145
      Delete logic from link_type_proxy() which link_type() can perform for us anyway.Also, include class/title attributes even for types which aren't hyperlinked.
      

      trunk/as2api
      html_output.rb 144 -> 145
      --- trunk/as2api/html_output.rb	2005-06-25 23:08:53 UTC (rev 144)
      +++ trunk/as2api/html_output.rb	2005-06-26 13:40:14 UTC (rev 145)
      @@ -258,7 +258,8 @@
      
       		       "class"=>attr_class,
       		       "title"=>attr_title})
           else
      
      -      pcdata(content)
      
      +      html_span(content, {"class"=>attr_class,
      +		          "title"=>attr_title})
      
           end
         end
       
      
      @@ -802,18 +803,10 @@
      
         end
       
         def link_type_proxy(type_proxy, qualified=false)
      
      -    if type_proxy.resolved? && type_proxy.resolved_type.document?
      
      +    if type_proxy.resolved?
      
             link_type(type_proxy.resolved_type, qualified)
           else
      
      -      if type_proxy.resolved?
      -	if type_proxy.resolved_type.instance_of?(ASInterface)
      -	  html_span(type_proxy.local_name, {"class"=>"interface_name"})
      -	else
      -	  html_span(type_proxy.local_name, {"class"=>"class_name"})
      -	end
      -      else
      -	html_span(type_proxy.local_name, {"class"=>"unresolved_type_name"})
      -      end
      
      +      html_span(type_proxy.local_name, {"class"=>"unresolved_type_name"})
      
           end
         end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 26 13:50:13 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 26 Jun 2005 13:50:13 +0000 Subject: [as2api-dev] [CVS trunk] Stop title attribute claiming that 'Void' is a class Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+11-11145 -> 146
      Stop title attribute claiming that 'Void' is a class
      

      trunk/as2api
      html_output.rb 145 -> 146
      --- trunk/as2api/html_output.rb	2005-06-26 13:40:14 UTC (rev 145)
      +++ trunk/as2api/html_output.rb	2005-06-26 13:50:11 UTC (rev 146)
      @@ -240,13 +240,15 @@
      
         end
       
         def link_type(type, qualified=false)
      
      -    href = link_for_type(type)
      
      +    attrs = {}
      
           if type.instance_of?(ASInterface)
      
      -      attr_class = "interface_name"
      -      attr_title = "Interface #{type.qualified_name}"
      -    else
      -      attr_class = "class_name"
      -      attr_title = "Class #{type.qualified_name}"
      
      +      attrs["class"] = "interface_name"
      +      attrs["title"] = "Interface #{type.qualified_name}"
      +    elsif type.instance_of?(ASClass)
      +      attrs["class"] = "class_name"
      +      attrs["title"] = "Class #{type.qualified_name}"
      +    elsif type == AS_VOID
      +      attrs["class"] = "void_name"
      
           end
           if qualified
             content = type.qualified_name
      
      @@ -254,12 +256,10 @@
      
             content = type.unqualified_name
           end
           if type.document?
      
      -      html_a(content, {"href"=>href,
      -		       "class"=>attr_class,
      -		       "title"=>attr_title})
      
      +      attrs["href"] = link_for_type(type)
      +      html_a(content, attrs)
      
           else
      
      -      html_span(content, {"class"=>attr_class,
      -		          "title"=>attr_title})
      
      +      html_span(content, attrs)
      
           end
         end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 26 14:47:31 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 26 Jun 2005 14:47:31 +0000 Subject: [as2api-dev] [CVS trunk] Implement some support for JavaDoc {@code ...} tag Message-ID:
      Commit in trunk/as2api on MAIN
      doc_comment.rb+17146 -> 147
      html_output.rb+4146 -> 147
      +21
      2 modified files
      Implement some support for JavaDoc {@code ...} tag
      

      trunk/as2api
      doc_comment.rb 146 -> 147
      --- trunk/as2api/doc_comment.rb	2005-06-26 13:50:11 UTC (rev 146)
      +++ trunk/as2api/doc_comment.rb	2005-06-26 14:47:29 UTC (rev 147)
      @@ -140,7 +140,15 @@
      
         attr_accessor :target, :member, :text
       end
       
      
      +class CodeTag
      +  def initialize(text)
      +    @text = text
      +  end
      
       
      
      +  attr_accessor :text
      +end
      +
      +
      
       class BlockTag
         def initialize
           @inlines = []
      
      @@ -208,6 +216,7 @@
      
       end
       
       
      
      +# handle {@link ...} in comments
      
       class LinkInlineParser < InlineParser
         def parse(block_data, input)
           link = create_link(input)
      
      @@ -219,7 +228,14 @@
      
         end
       end
       
      
      +# handle {@code ...} in comments
      +class CodeInlineParser < InlineParser
      +  def parse(block_data, input)
      +    block_data.add_inline(CodeTag.new(input.text))
      +  end
      +end
      
       
      
      +
      
       class BlockParser
         def initialize
           @inline_parsers = {}
      
      @@ -395,6 +411,7 @@
      
       
         def add_common_inlines(block_parser)
           block_parser.add_inline_parser("link", LinkInlineParser.new)
      
      +    block_parser.add_inline_parser("code", CodeInlineParser.new)
      
         end
       
         def build_description_block_parser
      

      trunk/as2api
      html_output.rb 146 -> 147
      --- trunk/as2api/html_output.rb	2005-06-26 13:50:11 UTC (rev 146)
      +++ trunk/as2api/html_output.rb	2005-06-26 14:47:29 UTC (rev 147)
      @@ -715,6 +715,10 @@
      
       	  pcdata(inline.member)
       	end
             end
      
      +    elsif inline.is_a?(CodeTag)
      +      html_code do
      +	pcdata(inline.text)
      +      end
      
           else
             html_em(inline.inspect)
           end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 26 21:32:01 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 26 Jun 2005 21:32:01 +0000 Subject: [as2api-dev] [CVS trunk] Fix "method redefined; discarding old title" warning Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+3-1147 -> 148
      Fix "method redefined; discarding old title" warning
      

      trunk/as2api
      html_output.rb 147 -> 148
      --- trunk/as2api/html_output.rb	2005-06-26 14:47:29 UTC (rev 147)
      +++ trunk/as2api/html_output.rb	2005-06-26 21:32:00 UTC (rev 148)
      @@ -180,8 +180,10 @@
      
           @io = nil  # to be set during the lifetime of generate() call
         end
       
      
      -  attr_accessor :path_name, :base_name, :encoding, :doctype_id, :title, :title_extra
      
      +  attr_accessor :path_name, :base_name, :encoding, :doctype_id, :title_extra
      
       
      
      +  attr_writer :title
      +
      
         def title
           if @title_extra
             if @title
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Sun Jun 26 23:03:30 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 26 Jun 2005 23:03:30 +0000 Subject: [as2api-dev] 0.3 pre-release Message-ID: <20050626230330.GA2073@vhost.badgers-in-foil.co.uk> I've put a pre-release of as2api-0.3 up here, http://www.badgers-in-foil.co.uk/projects/as2api/tmp/as2api-0.3/ Unless someone points out obvious b0rkage, this will become the final 0.3 release at some point in the next few days. If anyone also wants to, - Suggest further examples that I could easily include - Have a go with rubyscript2exe on OSX[1] that would be very welcome :) crossing my fingers, dave [1] http://www.erikveen.dds.nl/rubyscript2exe/index.html -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Sun Jun 26 23:04:38 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sun, 26 Jun 2005 23:04:38 +0000 Subject: [as2api-dev] [CVS trunk] Document some of the recent changes Message-ID:
      Commit in trunk/as2api on MAIN
      as2api-documentation.xml+47-9148 -> 149
      Document some of the recent changes
      

      trunk/as2api
      as2api-documentation.xml 148 -> 149
      --- trunk/as2api/as2api-documentation.xml	2005-06-26 21:32:00 UTC (rev 148)
      +++ trunk/as2api/as2api-documentation.xml	2005-06-26 23:04:37 UTC (rev 149)
      @@ -216,6 +216,16 @@
      
       		<entry><link linkend="throws_tag"><literal>@throws</literal></link></entry>
       		<entry>Describe an exception thrown by a method</entry>
       	      </row>
      
      +	      <row>
      +		<entry><link linkend="link_tag"><literal>{@link}</literal></link></entry>
      +		<entry>Link to the documentation of another type or
      +		type-member</entry>
      +	      </row>
      +	      <row>
      +		<entry><link linkend="code_tag"><literal>{@code}</literal></link></entry>
      +		<entry>A code example (automatically escapes HTML special
      +		characters, like '&amp;'</entry>
      +	      </row>
      
       	    </tbody>
       	  </tgroup>
       	</informaltable>
      
      @@ -240,10 +250,6 @@
      
       		<entry></entry>
       	      </row>
       	      <row>
      
      -		<entry><literal>{@code}</literal></entry>
      -		<entry></entry>
      -	      </row>
      -	      <row>
      
       		<entry><literal>{@docRoot}</literal></entry>
       		<entry></entry>
       	      </row>
      
      @@ -260,10 +266,6 @@
      
       		<entry></entry>
       	      </row>
       	      <row>
      
      -		<entry><literal>{@link}</literal></entry>
      -		<entry>To be implemented soon-ish</entry>
      -	      </row>
      -	      <row>
      
       		<entry><literal>{@linkPlain}</literal></entry>
       		<entry></entry>
       	      </row>
      
      @@ -440,6 +442,9 @@
      
        * turned into links to other classes/methods as they should be.
        *
        * <emphasis role="strong">@see "some stuff"</emphasis>
      
      + * <emphasis role="strong">@see some.OtherClass</emphasis>
      + * <emphasis role="strong">@see some.OtherClass#field_name</emphasis>
      + * <emphasis role="strong">@see some.OtherClass#method_name()</emphasis>
      
        */
       class somepackage.ThisClass {
           // ...
      
      @@ -452,7 +457,7 @@
      
       
       	<para><remark>TODO</remark></para>
       	<example>
      
      -	  <title>Class Related information</title>
      
      +	  <title>Exceptions Thrown by a Method</title>
      
       	  <programlisting>/**
        * Causes this message to be sent
        *
      
      @@ -464,6 +469,39 @@
      
       }</programlisting>
       	</example>
             </section>
      
      +
      +      <section id="link_tag">
      +	<title>Linking to Other Parts of the API Documentation</title>
      +
      +	<para><remark>TODO</remark></para>
      +	<example>
      +	  <title>Linking to Other Parts of the API</title>
      +	  <programlisting>/**
      + * Causes this message to be sent to the <emphasis role="strong">{@link OtherClass}</emphasis>
      + * instance, where it will be dealt with by <emphasis role="strong">{@link OtherClass#recieve()}</emphasis>.
      + * We remember the destination in our <emphasis role="strong">{@link #reciever}</emphasis> field.
      + */
      +public function send():Void {
      +    // ...
      +}</programlisting>
      +	</example>
      +      </section>
      +
      +      <section id="code_tag">
      +	<title>Giving Code Examples</title>
      +
      +	<para><remark>TODO</remark></para>
      +	<example>
      +	  <title>Example Code</title>
      +	  <programlisting>/**
      + * Generates an ending XML tag. For example, if passed <emphasis role="strong">{@code "p"}</emphasis>,
      + * the result will be <emphasis role="strong">{@code "&lt;/p&gt;"}</emphasis>
      + */
      +public function endTag(name:String):String {
      +    // ...
      +}</programlisting>
      +	</example>
      +      </section>
      
           </section>
         </section>
       </article>
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 27 14:25:26 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 14:25:26 +0000 Subject: [as2api-dev] [CVS trunk] Project homepage metadata XML Message-ID:
      Commit in trunk/as2api on MAIN
      project.xml+321added 150
      Project homepage metadata XML
      

      trunk/as2api
      project.xml added at 150
      --- trunk/as2api/project.xml	2005-06-26 23:04:37 UTC (rev 149)
      +++ trunk/as2api/project.xml	2005-06-27 14:25:25 UTC (rev 150)
      @@ -0,0 +1,321 @@
      
      +<?xml version="1.0"?>
      +
      +<project id="as2api" xmlns="http://www.badgers-in-foil.co.uk/projects/">
      +  <title>as2api</title>
      +  <homepage url="http://www.badgers-in-foil.co.uk/projects/as2api"/>
      +  <shortdesc>'JavaDoc' for ActionScript 2</shortdesc>
      +  <keywords>
      +    <keyword>API documentation</keyword>
      +    <keyword>Application Programming Interface</keyword>
      +    <keyword>Documenter</keyword>
      +    <keyword>AS2</keyword>
      +    <keyword>Macromedia</keyword>
      +    <keyword>Flash</keyword>
      +    <keyword>Action Script</keyword>
      +    <keyword>Open Source</keyword>
      +  </keywords>
      +
      +  <longdesc>
      +    <para>This is a <ulink
      +    url="http://java.sun.com/j2se/javadoc/">JavaDoc</ulink>-a-like for <ulink
      +    url="http://www.macromedia.com/devnet/mx/flash/actionscript.html">ActionScript</ulink>
      +    2.0.</para>
      +
      +    <para>It began it because there don't seem to be any complete, free
      +    (<abbrev>GPL<alt>GNU General Public License</alt></abbrev> or simmilar),
      +    <abbrev>API<alt>Application Programming Interface</alt></abbrev>
      +    documentation tools, as of November 2004.</para>
      +    
      +    <para>The scripts are implemented in
      +    <ulink url="http://www.ruby-lang.org/">Ruby<alt>The Ruby Programming Language</alt></ulink>,
      +    and work under Windows, Mac OSX, and Linux.  An exe is provided for windows
      +    users who don't want to install Ruby.</para>
      +  </longdesc>
      +
      +  <status>
      +    <para>If you already know JavaDoc, lots of stuff will work as expected.
      +    Still to be done:</para>
      +    <itemizedlist>
      +      <listitem><para>Support more of the estandard JavaDoc
      +      tags</para></listitem>
      +      <listitem><para>Automatically pull any package.html contents into
      +      package-summary page</para></listitem>
      +      <listitem><para>Localisation</para></listitem>
      +    </itemizedlist>
      +  </status>
      +
      +  <section>
      +    <title>Examples</title>
      +    <variablelist>
      +      <varlistentry>
      +	<term><ulink url="examples/enflash-0.3/frameset.html">com.asusual.*</ulink></term>
      +	<listitem><para>Documentation for the <ulink url="http://www.asual.com/enflash/">EnFlash framework, version 0.3</ulink>.</para></listitem>
      +      </varlistentry>
      +
      +      <varlistentry>
      +	<term><ulink url="examples/as2lib-0.9/frameset.html">com.as2lib.*</ulink></term>
      +	<listitem><para>Documentation for <ulink url="http://www.as2lib.org/">As2lib framework, version 0.9</ulink>.</para></listitem>
      +      </varlistentry>
      +    </variablelist>
      +  </section>
      +
      +  <section>
      +    <title>Usage</title>
      +
      +    <section>
      +      <title>Windows .exe Version</title>
      +
      +      <para>In the zip archive, you'll find the <filename>as2api</filename>
      +      executable.  (This is a commandline application -- you can't run
      +      it simply by double-clicking the icon.)  Run this, from the
      +      directory that contains it, by entering:</para>
      +
      +      <screen>as2api --classpath <replaceable>source/dir</replaceable> <replaceable>com.example.*</replaceable></screen>
      +
      +      <para>See the section bellow describing the available command line
      +      options.</para>
      +    </section>
      +
      +    <section>
      +      <title>Plain Ruby Scripts</title>
      +
      +      <para>To make use of the plain script files, you must have a copy of
      +      <ulink url="http://www.ruby-lang.org/">Ruby</ulink> installed.  The
      +      main script is <filename>as2api.rb</filename>.  Run this, from the
      +      directory that contains it, by entering:</para>
      +
      +      <screen>ruby as2api.rb --classpath <replaceable>source/dir</replaceable> <replaceable>com.example.*</replaceable></screen>
      +
      +      <para>The script will create a directory called
      +      <filename>apidoc</filename> within the current directory.</para>
      +    </section>
      +
      +    <section>
      +      <title>Command Line Options</title>
      +
      +      <para>The only mandatory command line option is a specification of which
      +      packages are to be documented.  There are two ways to specify
      +      packages:</para>
      +
      +      <variablelist>
      +      	<varlistentry>
      +	  <term>Exact package name</term>
      +	  <listitem><para>Specifies that exactly those classes in the named
      +	  package should be documented.  'Sub-packages' will be
      +	  ignored.  e.g. <userinput>com.example.pkg</userinput></para></listitem>
      +      	</varlistentry>
      +      	<varlistentry>
      +	  <term>Package name prefix</term>
      +	  <listitem><para>Specifies the prefix on the names of packages to
      +	  be documented.  e.g. <userinput>com.example.pkg.*</userinput></para></listitem>
      +      	</varlistentry>
      +      </variablelist>
      +
      +      <para>The following optional parameters are supported:</para>
      +
      +      <variablelist>
      +      	<varlistentry>
      +	  <term><option>--classpath <replaceable>path</replaceable></option></term>
      +	  <listitem><para>A list of paths (delimited by ';' on windows and
      +	  ':' on other platforms).  Each path will be searched for packages
      +	  matching the given 'package spec' list.  If no classpath is
      +	  specified, only the current directory is searched.</para></listitem>
      +      	</varlistentry>
      +
      +      	<varlistentry>
      +	  <term><option>--output-dir <replaceable>path</replaceable></option></term>
      +	  <listitem><para>The directory into which generated HTML files will be
      +	  placed (the directory will be created, if required.  If no output
      +	  directory is specified the default <filename>apidocs</filename> is
      +	  used.</para></listitem>
      +      	</varlistentry>
      +
      +      	<varlistentry>
      +	  <term><option>--progress</option></term>
      +	  <listitem><para>Print feedback showing how far tasks have
      +	  progressed.</para></listitem>
      +      	</varlistentry>
      +
      +      	<varlistentry>
      +	  <term><option>--title <replaceable>text</replaceable></option></term>
      +	  <listitem><para>Put the given text into the titles of generated HTML
      +	  pages.</para></listitem>
      +      	</varlistentry>
      +
      +      	<varlistentry>
      +	  <term><option>--encoding <replaceable>name</replaceable></option></term>
      +	  <listitem><para>The encoding of the source files to be
      +	  parsed.</para></listitem>
      +      	</varlistentry>
      +
      +      	<varlistentry>
      +	  <term><option>--draw-diagrams</option></term>
      +	  <listitem><para>Causes class/interface inheritance diagrams to be
      +	  generated for each package (requires that you have
      +	  <ulink url="http://www.graphviz.org/">Graphviz<alt>Graph Visualization Software</alt></ulink>).</para>
      +	  </listitem>
      +      	</varlistentry>
      +
      +      	<varlistentry>
      +	  <term><option>--dot-exe <replaceable>filename</replaceable></option></term>
      +	  <listitem><para>Specify the location of the <command>dot</command>
      +	  tool from Graphviz, if it is not available via the standard
      +	  PATH.</para></listitem>
      +      	</varlistentry>
      +      </variablelist>
      +    </section>
      +  </section>
      +
      +  <releases freshmeatname="as2api">
      +    <release id="0.1" date="2004-11-21">
      +      <downloads>
      +	<dl file="as2api-allinone-w32-0.1.zip">Windows all-in-one .exe</dl>
      +	<dl file="as2api-0.1.tar.gz">Plain Ruby scripts</dl>
      +      </downloads>
      +      <changelog>
      +	<change>Output looks vaguely like JavaDoc if you squint</change>
      +      </changelog>
      +    </release>
      +
      +    <release id="0.2" date="2004-12-07">
      +      <downloads>
      +	<dl file="as2api-allinone-w32-0.2.zip">Windows all-in-one GUI .exe</dl>
      +	<dl file="as2api-0.2.tar.gz">Plain Ruby scripts</dl>
      +      </downloads>
      +      <changelog>
      +      	<change>GUI for Windows</change>
      +      	<change>Frameset navigation pages now generated</change>
      +	<change>Method and field indexes contain links to methods and fields
      +	inherited from super-types</change>
      +	<change>Support <literal>get</literal> and <literal>set</literal>
      +	implicit property access functions</change>
      +	<change>Notice constructor functions as such, and present differently
      +	in documenation</change>
      +      	<change>Sort lists alphabetically, in various spots</change>
      +      	<change>Tiny Ruby 1.6 compatability fix</change>
      +	<change>Hack to derive package-name from source path, when no package
      +	is specified in the source file</change>
      +	<change>Don't give error for <literal>intrinsic</literal>
      +	keyword</change>
      +      	<change>Don't treat <literal>is</literal> as a keyword</change>
      +	<change>Ignore [attributes] preceeding types and type-members, rather
      +	than producing a parse error</change>
      +      	<change>Generate documentation for fields as well as methods</change>
      +	<change>Ignore <literal>#import</literal> keyword (allow parsing to
      +	continue, rather than cause a parse error)</change>
      +	<change>Fix known causes of parse errors due to missing
      +	semicolons</change>
      +      </changelog>
      +    </release>
      +
      +    <release id="0.3" date="2005-??-??">
      +      <downloads>
      +	<dl file="as2api-0.3.tar.gz">Plain Ruby scripts</dl>
      +	<dl file="as2api-allinone-w32-0.3.zip">Windows .exe</dl>
      +      </downloads>
      +
      +      <changelog>
      +	<change>Threw away windows GUI again (may return in some later
      +	release)</change>
      +	<change>Vastly improved command-line interface</change>
      +	<change>Package documentation may include class/interface inheritance
      +	diagrams if the <literal>--draw-diagrams</literal> option is
      +	used</change>
      +	<change>Documentation now includes an alphabetical index of types,
      +	members and packages</change>
      +	<change>Private class members are now excluded from generated
      +	docs</change>
      +	<change>Implemented <literal>{@link ...}</literal> tag handling</change>
      +	<change>The <literal>@see ...</literal> tag will now generate links to
      +	types/members, per JavaDoc</change>
      +	<change>Implemented <literal>{@code ...}</literal> tag handling</change>
      +	<change>Added 'Specified By' section to method description, showing
      +	which interface defines the method</change>
      +	<change>Types that aren't being documented may still be processed.
      +	e.g. you can now see the stuff you inherit from
      +	<literal>MovieClip</literal> without having to generate docs for
      +	<literal>MovieClip</literal> itself (as long as the MM classes are in
      +	the classpath)</change>
      +	<change>The encoding of input files may be specified</change>
      +	<change>It is no longer necessary to copy the CSS into the output
      +	directory by hand</change>
      +	<change>It's possible to supply some text to appear in HTML page
      +	titles</change>
      +	<change>Too many XHTML compliance bugfixes to list</change>
      +	<change>HTML in doc-comments will now stay as HTML in output, without
      +	<literal>&lt;</literal> being encoded as <literal>&amp;lt;</literal>,
      +	etc.</change>
      +      </changelog>
      +    </release>
      +  </releases>
      +
      +  <section>
      +    <title>Code</title>
      +
      +    <para>The code is viewable at,</para>
      +
      +    <para><literal>http://svn.badgers-in-foil.co.uk/viewcvs.cgi/as2api/trunk/as2api/</literal></para>
      +
      +    <para>(Not linked, to avoid ViewCVS straining the server, but feel free to
      +    cut'n'paste'n'browse around.)</para>
      +  </section>
      +
      +  <mailinglists>
      +    <list name="as2api-dev">
      +      <listdesc>Direct all comments to the as2api development mailing
      +      list</listdesc>
      +      <listinfo url="http://lists.badgers-in-foil.co.uk/mailman/listinfo/as2api-dev"/>
      +    </list>
      +  </mailinglists>
      +
      +  <related>
      +    <relation kind="Other ActionScript 2 API documentation generators">
      +      <relatedproject name="AS2docGenerator">
      +        <homepage url="http://as2docgenerator.berlios.de/"/>
      +      </relatedproject>
      +      <relatedproject name="BLDoc">
      +        <homepage url="http://www.blinex.com/products/bldoc/"/>
      +      </relatedproject>
      +      <relatedproject name="ActionDoc">
      +        <homepage url="http://www.jellyvision.com/actiondoc/"/>
      +      </relatedproject>
      +      <relatedproject name="ASDocGen">
      +        <homepage url="http://www.asdocgen.org/"/>
      +      </relatedproject>
      +      <relatedproject name="VisDoc">
      +        <homepage url="http://visiblearea.com/visdoc/"/>
      +      </relatedproject>
      +      <relatedproject name="AS2Doc">
      +        <homepage url="http://www.as2doc.com/"/>
      +      </relatedproject>
      +      <relatedproject name="ASDT">
      +        <homepage url="http://asdt.sourceforge.net/"/>
      +      </relatedproject>
      +      <relatedproject name="ASDocular">
      +        <homepage url="http://www.senocular.com/projects/AS2Docular/"/>
      +      </relatedproject>
      +      <relatedproject name="Acid">
      +        <homepage url="http://icube.freezope.org/acid/"/>
      +      </relatedproject>
      +    </relation>
      +
      +    <relation kind="Directory Categories">
      +      <relatedproject name="Documentation Systems, on osflash.org">
      +        <homepage url="http://osflash.org/doku.php?id=open_source_flash_projects#documentation_systems"/>
      +      </relatedproject>
      +      <relatedproject name="General Flash Software, on dmoz.org">
      +        <homepage url="http://dmoz.org/Computers/Multimedia/Software/Macromedia_Flash/Software/"/>
      +      </relatedproject>
      +    </relation>
      +
      +    <relation kind="The Daddy">
      +      <relatedproject name="Javadoc Tool Homepage">
      +        <homepage url="http://java.sun.com/j2se/javadoc/"/>
      +      </relatedproject>
      +    </relation>
      +  </related>
      +</project>
      +
      +<!--
      +vim:shiftwidth=2:softtabstop=2
      +-->
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 27 14:37:30 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 14:37:30 +0000 Subject: [as2api-dev] [CVS trunk] Bye to the old homepage Message-ID:
      Commit in trunk/as2api on MAIN
      index.html-159150 removed
      Bye to the old homepage
      

      trunk/as2api
      index.html removed after 150
      --- trunk/as2api/index.html	2005-06-27 14:25:25 UTC (rev 150)
      +++ trunk/as2api/index.html	2005-06-27 14:37:29 UTC (rev 151)
      @@ -1,159 +0,0 @@
      
      -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      -	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      -<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
      -  <head>
      -    <title>as2api : JavaDoc for ActionScript 2.0</title>
      -    <meta name="keywords" content="API documentation, Application Programming Interface, AS2, Macromedia, Flash, Action Script"/>
      -    <style type="text/css"><!--
      -      h1,h2,h3		{ font-family: sans-serif; clear: both; }
      -      p,ul,ol,pre,dl	{ margin: 0 8% .5em 8%; }
      -      h3		{ margin: 0 4% .5em 4%; }
      -      dt		{ font-weight: bolder; }
      -      pre		{ padding: .5em; border: 1px dashed black; background-color: #dddddd; }
      -      .button		{ border: 1px outset; font-family: sans-serif; white-space: nowrap; }
      -      .float_after	{ float: right; }
      -    --></style>
      -  </head>
      -
      -  <body>
      -    <h1>as2api</h1>
      -
      -    <h2>About</h2>
      -    <p>This is a <a href="http://java.sun.com/j2se/javadoc/">JavaDoc</a>-a-like
      -    for
      -    <a href="http://www.macromedia.com/devnet/mx/flash/actionscript.html">ActionScript</a> 2.0.</p>
      -
      -    <p>It began it because there don't seem to be any complete, free (GPL or
      -    simmilar), API documentation tools, as of November 2004.</p>
      -    
      -    <p>The scripts are implemented in
      -    <a href="http://www.ruby-lang.org/">Ruby</a>, and work under Windows, Mac
      -    OSX, and Linux.  A GUI is available for Windows (and soon, OSX too).</p>
      -
      -    <h2>Status</h2>
      -    <p>Starting to be useful.  Still to be done:</p>
      -    <ul>
      -      <li>Proper command-line options</li>
      -      <li>Have some way of pre-populating namespace with standard types (String,
      -      Object) so that type resolution doesn't complain when they're not
      -      found</li>
      -      <li>Hide private class members</li>
      -      <li>Automatically pull any package.html contents into package-summary
      -      page</li>
      -      <li>Be package/class centric, rather than sourcepath centric (i.e. we
      -      should be given a list of packages to document, and just load what's
      -      required to document the API of those types)</li>
      -      <li>Automatically include the default CSS with the generated files (if
      -      there's no file there already)</li>
      -    </ul>
      -
      -
      -    <h2>Examples</h2>
      -    <dl>
      -      <dt><a href="examples/xpath/index.html">com.xfactorstudio.xml.xpath</a></dt>
      -      <dd>Documentation for the <a href="http://xfactorstudio.com/">XFactor
      -      Studio XPath API</a>.</dd>
      -
      -      <dt><a href="examples/asunit/index.html">com.asunit.framework</a></dt>
      -      <dd>Documentation for the <a href="http://asunit.com/">AsUnit
      -      unit-testing framework</a>.</dd>
      -    </dl>
      -
      -    <h2>Usage</h2>
      -    <h3>Windows All-in-One Executable</h3>
      -
      -    <p><img src="win32_screenshot.png" class="float_after" alt="The simple user interface allows source directories to be specified, and an output directory for generated HTML to be chosen." />
      -    On extracting the zip file, you should be left with
      -    <code>as2api_win32.exe</code> and <code>style.css</code>.  On running
      -    the executable, you should see a window like that shown.</p>
      -
      -    <ol>
      -      <li>Use the <span class="button">Add...</span> button to add entries
      -      to the classpath list.  These entries must be the folders that contain
      -      your ActionScript packages (i.e. <em>not</em> the folders that contain
      -      the <code>.as</code> files themelves).</li>
      -      <li>Use the <span class="button">Browse...</span> button to choose
      -      where the generated files should be placed.  (NB there is currently
      -      no button to create a new folder, although there needs to be one.
      -      Sorry.)</li>
      -      <li>Press <span class="button">Generate Docs...</span> and wait for
      -      processing to finish</li>
      -      <li>Copy <code>style.css</code> into the output directory by hand</li>
      -    </ol>
      -
      -    <h3>Ruby Scripts</h3>
      -
      -    <p>To make use of the plain script files, you must have a copy of <a
      -    href="http://www.ruby-lang.org/">Ruby</a> installed.  The distribution
      -    archive contains a number of files, with the main script being
      -    <code>documentor.rb</code>.  Run this script, from the directory that
      -    contains it, by saying:</p>
      -    <pre>dave@castle:~/projects/as2api$ <strong>ruby documenter.rb <em>path/to/sources</em></strong></pre>
      -    <p>The script will create a directory called <code>apidoc</code> within
      -    the current directory.  You place a copy of <code>style.css</code> into
      -    this directory by hand.</p>
      -
      -    
      -    <h2>Download</h2>
      -    <p>New releases will be announced on
      -    <a href="http://freshmeat.net/projects/as2api/">freshmeat</a>.</p>
      -    <p>Will have a GUI package for OSX, once
      -    <a href="http://www.philsgaff.co.uk/index.php?cat=5">Phil</a> sorts it
      -    out ;)</p>
      -    <h3>Current</h3>
      -    <p>Windows all-in-one GUI .exe: <a href="releases/as2api-allinone-w32-0.2.zip">as2api-allinone-w32-0.2.zip</a> ~1.8MiB<br />
      -    Plain Ruby scripts <a href="releases/as2api-0.2.tar.gz">as2api-0.2.tar.gz</a> ~11KiB</p>
      -    <p>Changes since 0.1:</p>
      -    <ul>
      -      <li>GUI for Windows</li>
      -      <li>Frameset navigation pages now generated</li>
      -      <li>Method and field indexes contain links to methods and fields
      -      inherited from super-types</li>
      -      <li>Support <code>get</code> and <code>set</code> implicit property
      -      access functions</li>
      -      <li>Notice constructor functions as such, and present differently in
      -      documenation</li>
      -      <li>Sort lists alphabetically, in various spots</li>
      -      <li>Tiny Ruby 1.6 compatability fix</li>
      -      <li>Hack to derive package-name from source path, when no package is
      -      specified in the source file</li>
      -      <li>Don't give error for <code>intrinsic</code> keyword</li>
      -      <li>Don't treat <code>is</code> as a keyword</li>
      -      <li>Ignore [attributes] preceeding types and type-members, rather than
      -      producing a parse error</li>
      -      <li>Generate documentation for fields as well as methods</li>
      -      <li>Ignore <code>#import</code> keyword (allow parsing to continue,
      -      rather than cause a parse error)</li>
      -      <li>Fix known causes of parse errors due to missing semicolons</li>
      -    </ul>
      -
      -    <h3>Previous</h3>
      -    <p>Windows all-in-one .exe: <a href="as2api-allinone-w32-0.1.zip">as2api-allinone-w32-0.1.zip</a> ~547KiB<br />
      -    Plain Ruby scripts <a href="as2api-0.1.tar.gz">as2api-0.1.tar.gz</a> ~10KiB</p>
      -
      -    <h2>Code</h2>
      -    <p>The code is viewable at
      -    <code>http://svn.badgers-in-foil.co.uk/viewcvs.cgi/as2api/trunk/as2api/</code>.
      -    (Not linked, to avoid ViewCVS straining the server, but feel free to
      -    cut'n'paste'n'browse around.)</p>
      -
      -    <h2>Contact</h2>
      -    <p>Please make use of the
      -    <a href="http://lists.badgers-in-foil.co.uk/mailman/listinfo/as2api-dev">as2api mailing list</a>.</p>
      -
      -    <h2>Related Software</h2>
      -    <p>Other AS2 documentation generators:</p>
      -    <ul>
      -      <li><a href="http://as2docgenerator.berlios.de/">AS2docGenerator</a></li>
      -      <li><a href="http://www.blinex.com/products/bldoc/">BLDoc</a></li>
      -      <li><a href="http://www.jellyvision.com/actiondoc/">ActionDoc</a></li>
      -      <li><a href="http://www.asdocgen.org/">ASDocGen</a></li>
      -      <li><a href="http://visiblearea.com/visdoc/">VisDoc</a></li>
      -      <li><a href="http://www.as2doc.com/">AS2Doc</a></li>
      -      <li><a href="http://asdt.sourceforge.net/">ASDT</a></li>
      -      <li><a href="http://www.senocular.com/projects/AS2Docular/">ASDocular</a></li>
      -      <li><a href="http://icube.freezope.org/acid/">Acid</a></li>
      -    </ul>
      -
      -  </body>
      -</html>
      
      CVSspam 0.2.11
      From erixtekila at dotgeek.org Mon Jun 27 14:42:12 2005 From: erixtekila at dotgeek.org (erixtekila) Date: Mon, 27 Jun 2005 16:42:12 +0200 Subject: [as2api-dev] [pre 0.3] Message-ID: <799431396c5fb774e5cde99a8820f19d@dotgeek.org> Hi David, Did you received my mail ? Send privatly ? See ya. ----------- erixtekila http://blog.v-i-a.net/ From dave at badgers-in-foil.co.uk Mon Jun 27 14:54:31 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 14:54:31 +0000 Subject: [as2api-dev] [CVS trunk] Have 'make' do more of the legwork to prepare a release, and bump to v0.3 Message-ID:
      Commit in trunk/as2api on MAIN
      Makefile+49-8151 -> 152
      Have 'make' do more of the legwork to prepare a release, and bump to v0.3
      
      Must think about moving all of this into the project.xml, somehow.
      

      trunk/as2api
      Makefile 151 -> 152
      --- trunk/as2api/Makefile	2005-06-27 14:37:29 UTC (rev 151)
      +++ trunk/as2api/Makefile	2005-06-27 14:54:30 UTC (rev 152)
      @@ -3,11 +3,18 @@
      
       docbook_stylesheet=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/fo/docbook.xsl
       java_home=~/opt/j2sdk1.4.2_05
       fop=~/incoming/fop-0.20.5/fop.sh
      
      +as2api=ruby -w as2api.rb
      
       
      
      -sources = documenter.rb doc_comment.rb xmlwriter.rb html_output.rb parse/lexer.rb parse/parser.rb parse/as_io.rb api_loader.rb api_model.rb
      -dist_files = ${sources} style.css as2api-documentation.pdf
      
      +sources = documenter.rb doc_comment.rb html_output.rb \
      +          xmlwriter.rb xhtmlwriter.rb \
      +          parse/lexer.rb parse/parser.rb parse/as_io.rb \
      +	  api_loader.rb api_model.rb \
      +          as2api.rb ui/cli.rb
      +docs_pdf=as2api-documentation.pdf
      +dist_files = ${sources} ${doc_pdf}
      +mx_classes=examples/flash_mx_2004_7.2/Classes
      
       
      
      -version = 0.2
      
      +version = 0.3
      
       
       dist_dir = as2api-${version}
       tgz_name = ${dist_dir}.tar.gz
      
      @@ -16,15 +23,38 @@
      
       
       dist: tgz zip
       
      
      +web-dist: tgz zip
      +	mkdir -p projects/as2api/releases
      +	cp ${tgz_name} ${zip_name} projects/as2api/releases
      +	mkdir -p projects/as2api/examples
      +	${as2api} --classpath ${mx_classes}:examples/as2lib_0.9/src \
      +	          --output projects/as2api/examples/as2lib-0.9 \
      +		  --draw-diagrams \
      +		  --title "as2lib 0.9" \
      +		  main.* org.as2lib.*
      +	${as2api} --classpath ${mx_classes}:examples/enflash-0.3/src/classes \
      +	          --output projects/as2api/examples/enflash-0.3 \
      +		  --draw-diagrams \
      +		  --title "enflash 0.3" \
      +		  com.asual.*
      +	${as2api} --classpath ${mx_classes}:examples/Oregano_1.2.0beta1/ \
      +	          --output projects/as2api/examples/oregano_1.2.0beta1/ \
      +		  --draw-diagrams \
      +		  --encoding utf-8 \
      +		  --title "Oregano 1.2.0beta1" \
      +		  org.omus.*
      +	cd projects/as2api && xsltproc ../../../www/project_page.xsl ../../project.xml > index.html
      +	cp ../www/bif.css projects/as2api
      +
      
       tgz: docs
       	mkdir -p ${dist_dir}
      
      -	cp --parents ${dist_files} ${dist_dir}
      
      +	cp --parents ${dist_files} ${doc_pdf} ${dist_dir}
      
       	tar czvf ${tgz_name} ${dist_dir}
       	rm -r ${dist_dir}
       
       zip: docs
       	mkdir -p ${w32_dist_dir}
      
      -	cp as2api_win32.exe style.css ${w32_dist_dir}
      
      +	cp as2api.exe ${doc_pdf} ${w32_dist_dir}
      
       	zip -r ${zip_name} ${w32_dist_dir}
       	rm -r ${w32_dist_dir}
       
      
      @@ -35,7 +65,7 @@
      
       	rm -rf ${tgz_name} ${zip_name} ${w32_dist_dir} ${dist_dir}
       
       
      
      -docs: as2api-documentation.pdf
      
      +docs: ${doc_pdf}
      
       
       
       as2api-documentation.fo: as2api-documentation.xml
      
      @@ -45,6 +75,17 @@
      
       		    as2api-documentation.xml \
       				> as2api-documentation.fo
       
      
      -as2api-documentation.pdf: as2api-documentation.fo
      
      +${doc_pdf}: as2api-documentation.fo
      
       	JAVA_HOME=${java_home} \
      
      -	${fop} as2api-documentation.fo -pdf as2api-documentation.pdf
      
      +	${fop} as2api-documentation.fo -pdf ${doc_pdf}
      +
      +# noddy check that running with --help option doesn't complain of missing
      +# required files,
      +dist-check: tgz
      +	rm -rf dist-check-tmp
      +	mkdir dist-check-tmp
      +	cd dist-check-tmp && \
      +	tar xzf ../${tgz_name} && \
      +	cd ${dist_dir} && \
      +	ruby -w as2api.rb --help > /dev/null
      +	rm -r dist-check-tmp
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 27 15:07:45 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 15:07:45 +0000 Subject: [as2api-dev] [CVS trunk] Doh, variable name was wrong Message-ID:
      Commit in trunk/as2api on MAIN
      Makefile+2-2152 -> 153
      Doh, variable name was wrong
      

      trunk/as2api
      Makefile 152 -> 153
      --- trunk/as2api/Makefile	2005-06-27 14:54:30 UTC (rev 152)
      +++ trunk/as2api/Makefile	2005-06-27 15:07:44 UTC (rev 153)
      @@ -10,7 +10,7 @@
      
                 parse/lexer.rb parse/parser.rb parse/as_io.rb \
       	  api_loader.rb api_model.rb \
                 as2api.rb ui/cli.rb
      
      -docs_pdf=as2api-documentation.pdf
      
      +doc_pdf=as2api-documentation.pdf
      
       dist_files = ${sources} ${doc_pdf}
       mx_classes=examples/flash_mx_2004_7.2/Classes
       
      
      @@ -48,7 +48,7 @@
      
       
       tgz: docs
       	mkdir -p ${dist_dir}
      
      -	cp --parents ${dist_files} ${doc_pdf} ${dist_dir}
      
      +	cp --parents ${dist_files} ${dist_dir}
      
       	tar czvf ${tgz_name} ${dist_dir}
       	rm -r ${dist_dir}
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 27 15:40:46 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 15:40:46 +0000 Subject: [as2api-dev] [CVS trunk] Rule to build the windows .exe Message-ID:
      Commit in trunk/as2api on MAIN
      Makefile+5153 -> 154
      Rule to build the windows .exe
      

      trunk/as2api
      Makefile 153 -> 154
      --- trunk/as2api/Makefile	2005-06-27 15:07:44 UTC (rev 153)
      +++ trunk/as2api/Makefile	2005-06-27 15:40:46 UTC (rev 154)
      @@ -4,6 +4,8 @@
      
       java_home=~/opt/j2sdk1.4.2_05
       fop=~/incoming/fop-0.20.5/fop.sh
       as2api=ruby -w as2api.rb
      
      +ruby_mswin32=/cygdrive/c/ruby/bin/ruby
      +rubyscript2exe=${ruby_mswin32} -w ../rubyscript2exe.rb
      
       
       sources = documenter.rb doc_comment.rb html_output.rb \
                 xmlwriter.rb xhtmlwriter.rb \
      
      @@ -52,6 +54,9 @@
      
       	tar czvf ${tgz_name} ${dist_dir}
       	rm -r ${dist_dir}
       
      
      +as2api.exe: ${sources}
      +	${rubyscript2exe} as2api.rb
      +
      
       zip: docs
       	mkdir -p ${w32_dist_dir}
       	cp as2api.exe ${doc_pdf} ${w32_dist_dir}
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Mon Jun 27 16:10:36 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 16:10:36 +0000 Subject: [as2api-dev] 0.3 pre-release In-Reply-To: <27e01d1e7edc93b5dc7448c9ab0a3fca@dotgeek.org> References: <20050626230330.GA2073@vhost.badgers-in-foil.co.uk> <27e01d1e7edc93b5dc7448c9ab0a3fca@dotgeek.org> Message-ID: <20050627161036.GA17942@vhost.badgers-in-foil.co.uk> Yes, I got the mail ;) On Mon, Jun 27, 2005 at 12:25:39PM +0200, erixtekila wrote: > >I've put a pre-release of as2api-0.3 up here, > > > > http://www.badgers-in-foil.co.uk/projects/as2api/tmp/as2api-0.3/ > > > I've downloaded the version and there are no as2api.rb and style.css is > still there ?! > Are you sure that you've checkout the MAIN repository state ? I've fixed the build process so that it includes the new 'as2api.rb', and I've deleted the 'style.css' I still had knocking around. Also, the (very unfinished) PDF documentation should now get included, and I noticed that the 'as2api.exe' I uploaded wasn't the very latest (was missing support for {@code ...} tag). [I should fix the CSS for the new project page, so that the content area gets centred in IE, but maybe that's not soooo important...] dave From dave at badgers-in-foil.co.uk Mon Jun 27 16:21:20 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 16:21:20 +0000 Subject: [as2api-dev] [pre 0.3] In-Reply-To: <799431396c5fb774e5cde99a8820f19d@dotgeek.org> References: <799431396c5fb774e5cde99a8820f19d@dotgeek.org> Message-ID: <20050627162120.GB17942@vhost.badgers-in-foil.co.uk> ...oh yeah, and I forgot to say in the last message... I've uploaded the files, in the same place as before, http://www.badgers-in-foil.co.uk/projects/as2api/tmp/as2api-0.3/ dave -- http://david.holroyd.me.uk/ From Rostislav Hristov Mon Jun 27 16:23:59 2005 From: Rostislav Hristov (Rostislav Hristov) Date: Mon, 27 Jun 2005 19:23:59 +0300 Subject: [as2api-dev] 0.3 pre-release In-Reply-To: <20050627161036.GA17942@vhost.badgers-in-foil.co.uk> References: <20050626230330.GA2073@vhost.badgers-in-foil.co.uk> <27e01d1e7edc93b5dc7448c9ab0a3fca@dotgeek.org> <20050627161036.GA17942@vhost.badgers-in-foil.co.uk> Message-ID: <435de14305062709231baf3bf9@mail.gmail.com> Congratulations for the new release, I will have to try it soon. The website also looks better now ;) -Rostislav --=20 EnFlash - It's all about features... http://www.asual.com/enflash/ From dave at badgers-in-foil.co.uk Mon Jun 27 17:36:15 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 17:36:15 +0000 Subject: [as2api-dev] 0.3 pre-release In-Reply-To: <20050626230330.GA2073@vhost.badgers-in-foil.co.uk> References: <20050626230330.GA2073@vhost.badgers-in-foil.co.uk> Message-ID: <20050627173614.GC17942@vhost.badgers-in-foil.co.uk> On Sun, Jun 26, 2005 at 11:03:30PM +0000, David Holroyd wrote: > - Have a go with rubyscript2exe on OSX[1] > [1] http://www.erikveen.dds.nl/rubyscript2exe/index.html I've had a quick go with this on a spare machine in the office. The resulting OSX proggy is here, http://www.badgers-in-foil.co.uk/projects/as2api/tmp/as2api-0.3/releases/as2api_darwin Should I make that into a .dmg, or something? What's the standard form for distributing OSX command line tools? dave -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Mon Jun 27 20:23:27 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 20:23:27 +0000 Subject: [as2api-dev] 0.3 pre-release In-Reply-To: <834bdd8f9a76fab28d07a398f646602f@dotgeek.org> References: <20050626230330.GA2073@vhost.badgers-in-foil.co.uk> <20050627173614.GC17942@vhost.badgers-in-foil.co.uk> <834bdd8f9a76fab28d07a398f646602f@dotgeek.org> Message-ID: <20050627202327.GA20209@vhost.badgers-in-foil.co.uk> On Mon, Jun 27, 2005 at 08:07:57PM +0200, erixtekila wrote: > How could we use that ? > > > http://www.badgers-in-foil.co.uk/projects/as2api/tmp/as2api-0.3/releases/as2api_darwin > > Is it a binary ? > An application ? > > It doesn't seems to work. > Does it requiere a launcher ? It's a command line program ('file' describes it as "Mach-O executable ppc"). I was able to run it (from the containing directory) by just saying, ./as2api_darwin --help ...which is not to say that it isn't broken somehow. dave From dave at badgers-in-foil.co.uk Mon Jun 27 23:39:42 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Mon, 27 Jun 2005 23:39:42 +0000 Subject: [as2api-dev] [CVS trunk] Use more up to date Oregano-client for example Message-ID:
      Commit in trunk/as2api on MAIN
      Makefile+3-3154 -> 155
      project.xml+5154 -> 155
      +8-3
      2 modified files
      Use more up to date Oregano-client for example
      

      trunk/as2api
      Makefile 154 -> 155
      --- trunk/as2api/Makefile	2005-06-27 15:40:46 UTC (rev 154)
      +++ trunk/as2api/Makefile	2005-06-27 23:39:39 UTC (rev 155)
      @@ -39,11 +39,11 @@
      
       		  --draw-diagrams \
       		  --title "enflash 0.3" \
       		  com.asual.*
      
      -	${as2api} --classpath ${mx_classes}:examples/Oregano_1.2.0beta1/ \
      -	          --output projects/as2api/examples/oregano_1.2.0beta1/ \
      
      +	${as2api} --classpath ${mx_classes}:examples/Oregano_client-1.2.0beta3/\
      +	          --output projects/as2api/examples/oregano_1.2.0beta3/ \
      
       		  --draw-diagrams \
       		  --encoding utf-8 \
      
      -		  --title "Oregano 1.2.0beta1" \
      
      +		  --title "Oregano Client 1.2.0 beta3" \
      
       		  org.omus.*
       	cd projects/as2api && xsltproc ../../../www/project_page.xsl ../../project.xml > index.html
       	cp ../www/bif.css projects/as2api
      

      trunk/as2api
      project.xml 154 -> 155
      --- trunk/as2api/project.xml	2005-06-27 15:40:46 UTC (rev 154)
      +++ trunk/as2api/project.xml	2005-06-27 23:39:39 UTC (rev 155)
      @@ -56,6 +56,11 @@
      
       	<term><ulink url="examples/as2lib-0.9/frameset.html">com.as2lib.*</ulink></term>
       	<listitem><para>Documentation for <ulink url="http://www.as2lib.org/">As2lib framework, version 0.9</ulink>.</para></listitem>
             </varlistentry>
      
      +
      +      <varlistentry>
      +	<term><ulink url="examples/oregano_1.2.0beta3/frameset.html">org.omus.*</ulink></term>
      +	<listitem><para>Documentation for <ulink url="http://www.v-i-a.net/blog/archives/000024.html">Oregano Multiuser Server client, version 1.2beta3</ulink>.</para></listitem>
      +      </varlistentry>
      
           </variablelist>
         </section>
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Tue Jun 28 15:15:44 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Tue, 28 Jun 2005 15:15:44 +0000 Subject: [as2api-dev] 0.3 pre-release In-Reply-To: <96bebcacebbb92bfcf32717bea85e1d3@dotgeek.org> References: <20050626230330.GA2073@vhost.badgers-in-foil.co.uk> <20050627173614.GC17942@vhost.badgers-in-foil.co.uk> <834bdd8f9a76fab28d07a398f646602f@dotgeek.org> <20050627202327.GA20209@vhost.badgers-in-foil.co.uk> <96bebcacebbb92bfcf32717bea85e1d3@dotgeek.org> Message-ID: <20050628151544.GC4691@vhost.badgers-in-foil.co.uk> On Tue, Jun 28, 2005 at 04:42:29PM +0200, erixtekila wrote: > I saw that you've mentionned Oregano as reference. Thanks. > I should rewrite some comments and include {@link} {@code} and format > with html tags. > I've tested with
       it really nice.
      > 
      > Is there csome tags that are not allowed ?
      
      as2api simply allows though whatever you enter; even invalid or just
      plain broken HTML is passed though to the resulting page.
      
      I had planned to do some kind of validation, but this way was *much*
      easier to implement.
      
      
      > I also saw that as the encoding is correctly set, the page display in 
      > iso when browsing ot your site ?!
      > In local, there is no problem.
      
      The encoding issue is due to the setup of Apache, I guess.  I've not
      looked into it yet, but I did notice that when running one of those
      pages though validator.w3.org, it stated it was ignoring the utf-8
      encoding specified in the document, and using 8859-1, as specified in
      the HTTP headers.  I'll try and fix that before the 'final' release.
      
      
      > I'll send you a better example to show for Oregano documentation ;P
      
      If anyone wants me to tweak the page titles, or use a custom CSS, let me
      know.
      
      
      dave
      
      
      From dave at badgers-in-foil.co.uk  Tue Jun 28 21:48:07 2005
      From: dave at badgers-in-foil.co.uk (David Holroyd)
      Date: Tue, 28 Jun 2005 21:48:07 +0000
      Subject: [as2api-dev] 0.3 pre-release
      In-Reply-To: <20050628151544.GC4691@vhost.badgers-in-foil.co.uk>
      References: <20050626230330.GA2073@vhost.badgers-in-foil.co.uk> <20050627173614.GC17942@vhost.badgers-in-foil.co.uk> <834bdd8f9a76fab28d07a398f646602f@dotgeek.org> <20050627202327.GA20209@vhost.badgers-in-foil.co.uk> <96bebcacebbb92bfcf32717bea85e1d3@dotgeek.org> <20050628151544.GC4691@vhost.badgers-in-foil.co.uk>
      Message-ID: <20050628214807.GA11486@vhost.badgers-in-foil.co.uk>
      
      On Tue, Jun 28, 2005 at 03:15:44PM +0000, David Holroyd wrote:
      > On Tue, Jun 28, 2005 at 04:42:29PM +0200, erixtekila wrote:
      > > I also saw that as the encoding is correctly set, the page display in 
      > > iso when browsing ot your site ?!
      > > In local, there is no problem.
      > 
      > The encoding issue is due to the setup of Apache, I guess.  I've not
      > looked into it yet, but I did notice that when running one of those
      > pages though validator.w3.org, it stated it was ignoring the utf-8
      > encoding specified in the document, and using 8859-1, as specified in
      > the HTTP headers.  I'll try and fix that before the 'final' release.
      
      So, httpd.conf contained,
      
        AddDefaultCharset on
      
      which is apparently something designed to reduce the risk of
      cross-site-scripting problems (though I didn't read up on how, exactly).
      
      I've turned it off for the moment, and that seems to fix things.
      
      Maybe I need to look into generating Apache '.htaccess' files.  (Hmm, I
      wonder what interesting hacks that would allow..?)
      
      
      dave
      
      -- 
      http://david.holroyd.me.uk/
      
      
      From dave at badgers-in-foil.co.uk  Tue Jun 28 22:42:39 2005
      From: dave at badgers-in-foil.co.uk (David Holroyd)
      Date: Tue, 28 Jun 2005 22:42:39 +0000
      Subject: [as2api-dev] [ANN] as2api 0.3 Released
      Message-ID: <20050628224238.GB11486@vhost.badgers-in-foil.co.uk>
      
      It's official.  Nothing's changed from the final pre-release versions
      (for those who've been following along at home).
      
      Get your downloads (and changelog vs. release 0.2) here,
      
        http://www.badgers-in-foil.co.uk/projects/as2api/#release_0.3
      
      
      Please point out anything I've obviously fouled up ;)
      
      I'm off to make a few more announcements...
      
      
      dave
      
      -- 
      http://david.holroyd.me.uk/
      
      
      From chris at re-structure.net  Wed Jun 29 19:26:47 2005
      From: chris at re-structure.net (chris k||re-structure)
      Date: Wed, 29 Jun 2005 21:26:47 +0200
      Subject: [as2api-dev] as2api-dev command tool step by step?
      In-Reply-To: <20050629001943.13955.11098.Mailman@vhost.badgers-in-foil.co.uk>
      Message-ID: <2005629212647.626159@re-structure>
      
      
      
      
      hey folks,
      =A0
      would someone maybe be kind enough and= show me how to use that tool under windows? i am not really getting it= since i never really used a command line tool... how do i go about it if= lets say i have the .exe file within C:\Applications\as2api.exe and if i= have the classes within D:\someFolder\as
      =A0
      thanks,
      chris

      From dave at badgers-in-foil.co.uk Wed Jun 29 20:25:06 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 20:25:06 +0000 Subject: [as2api-dev] as2api-dev command tool step by step? In-Reply-To: <2005629212647.626159@re-structure> References: <20050629001943.13955.11098.Mailman@vhost.badgers-in-foil.co.uk> <2005629212647.626159@re-structure> Message-ID: <20050629202506.GB30638@vhost.badgers-in-foil.co.uk> On Wed, Jun 29, 2005 at 09:26:47PM +0200, chris k||re-structure wrote: > would someone maybe be kind enough and show me how to use that tool > under windows? i am not really getting it since i never really used a > command line tool... how do i go about it if lets say i have the .exe > file within C:\Applications\as2api.exe and if i have the classes > within D:\someFolder\as Sure. First thing is, getting the software to run at all. Try a basic test: C:\>c:\applications\as2api --help Usage: [..some path..]\as2api.rb [options] ... [..rest of usage message..] If you get a usage message, the next step is to work out where you want the output to appear. I'm going to guess 'D:\someFolder\' is where all the files are this project are, so we'll put the docs there too, using the --output-dir option. You'll need to tell as2api where to find your code. This is done using the --classpath option. You can actually specify multiple places to look for code, but I'll assume that you've got everything in 'D:\someFolder\as'. Last, you have to specify what ActionScript packages should be documented. This is currently mandatory, and there's no way to specify the 'default' or 'top level' package yet (i.e. the package in which the standard String and MovieClip classes exist). Sorry about that :) I'll assume that your code uses packages with names beginning with 'net.restructure'. So combining these three things together, you need to run a command line something like, c:\applications\as2api --output-dir D:\someFolder\apidocs --classpath D:\someFolder\as net.restructure.* [For the sake of clarity, I split the text over three lines; you'll need to enter it all on a single line, only pressing return at the end.] Hopefully, after complaining about not-too-many things that it doesn't understand, or can't cope with yet, you should find lots of HTML files in the newly-created 'D:\someFolder\apidocs' folder. If not; cut an paste any error messages that you see at the command line into an email, and we can try to work out what's wrong. good luck, dave -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Wed Jun 29 21:26:20 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 21:26:20 +0000 Subject: [as2api-dev] [CVS trunk] Targets for building the stuffit dist Message-ID:
      Commit in trunk/as2api on MAIN
      Makefile+14-4155 -> 156
      Targets for building the stuffit dist
      

      trunk/as2api
      Makefile 155 -> 156
      --- trunk/as2api/Makefile	2005-06-27 23:39:39 UTC (rev 155)
      +++ trunk/as2api/Makefile	2005-06-29 21:26:16 UTC (rev 156)
      @@ -6,6 +6,7 @@
      
       as2api=ruby -w as2api.rb
       ruby_mswin32=/cygdrive/c/ruby/bin/ruby
       rubyscript2exe=${ruby_mswin32} -w ../rubyscript2exe.rb
      
      +stuff=~/incoming/stuffit520.611linux-i386/bin/stuff
      
       
       sources = documenter.rb doc_comment.rb html_output.rb \
                 xmlwriter.rb xhtmlwriter.rb \
      
      @@ -22,12 +23,14 @@
      
       tgz_name = ${dist_dir}.tar.gz
       w32_dist_dir = as2api-allinone-w32-${version}
       zip_name = ${w32_dist_dir}.zip
      
      +osx_dist_dir = as2api-allinone-osx-${version}
      +sit_name = ${osx_dist_dir}.sit
      
       
      
      -dist: tgz zip
      
      +dist: tgz zip sit
      
       
      
      -web-dist: tgz zip
      
      +web-dist: tgz zip sit
      
       	mkdir -p projects/as2api/releases
      
      -	cp ${tgz_name} ${zip_name} projects/as2api/releases
      
      +	cp ${tgz_name} ${zip_name} ${sit_name} projects/as2api/releases
      
       	mkdir -p projects/as2api/examples
       	${as2api} --classpath ${mx_classes}:examples/as2lib_0.9/src \
       	          --output projects/as2api/examples/as2lib-0.9 \
      
      @@ -63,11 +66,18 @@
      
       	zip -r ${zip_name} ${w32_dist_dir}
       	rm -r ${w32_dist_dir}
       
      
      +sit: ${sit_name}
      +
      +${sit_name}: docs as2api_darwin
      +	mkdir -p ${osx_dist_dir}
      +	cp as2api_darwin ${doc_pdf} ${osx_dist_dir}
      +	${stuff} --name=${sit_name} ${osx_dist_dir}
      +
      
       test:
       	ruby -w ts.rb
       
       clean:
      
      -	rm -rf ${tgz_name} ${zip_name} ${w32_dist_dir} ${dist_dir}
      
      +	rm -rf ${tgz_name} ${zip_name} ${sit_name} ${w32_dist_dir} ${dist_dir}
      
       
       
       docs: ${doc_pdf}
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 29 21:26:55 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 21:26:55 +0000 Subject: [as2api-dev] [CVS trunk] Link to the OSX download Message-ID:
      Commit in trunk/as2api on MAIN
      project.xml+1156 -> 157
      Link to the OSX download
      

      trunk/as2api
      project.xml 156 -> 157
      --- trunk/as2api/project.xml	2005-06-29 21:26:16 UTC (rev 156)
      +++ trunk/as2api/project.xml	2005-06-29 21:26:54 UTC (rev 157)
      @@ -217,6 +217,7 @@
      
             <downloads>
       	<dl file="as2api-0.3.tar.gz">Plain Ruby scripts</dl>
       	<dl file="as2api-allinone-w32-0.3.zip">Windows .exe</dl>
      
      +	<dl file="as2api-allinone-osx-0.3.sit">OSX program</dl>
      
             </downloads>
       
             <changelog>
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 29 21:28:21 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 21:28:21 +0000 Subject: [as2api-dev] [CVS trunk] An additional way of specifying the generated HTML file's encoding Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+4157 -> 158
      An additional way of specifying the generated HTML file's encoding
      (just in case something ignores the XML PI at the top)
      

      trunk/as2api
      html_output.rb 157 -> 158
      --- trunk/as2api/html_output.rb	2005-06-29 21:26:54 UTC (rev 157)
      +++ trunk/as2api/html_output.rb	2005-06-29 21:28:20 UTC (rev 158)
      @@ -234,6 +234,10 @@
      
       		       "type"=>"text/css",
       		       "href"=>base_path("style.css"))
             html_meta("name"=>"generator", "content"=>PROJECT_PAGE)
      
      +      unless encoding.nil?
      +        html_meta("http-equiv"=>"Content-Type",
      +	          "content"=>"text/html; charset=#{encoding}")
      +      end
      
           end
         end
       
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 29 21:41:10 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 21:41:10 +0000 Subject: [as2api-dev] [CVS trunk] Stop trying so hard to avoid creating the method_info div. Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+6-8158 -> 159
      Stop trying so hard to avoid creating the method_info div.
      This is making it harder to implement other things.
      

      trunk/as2api
      html_output.rb 158 -> 159
      --- trunk/as2api/html_output.rb	2005-06-29 21:28:20 UTC (rev 158)
      +++ trunk/as2api/html_output.rb	2005-06-29 21:41:09 UTC (rev 159)
      @@ -531,8 +531,8 @@
      
             html_a("name"=>"method_#{method.name}")
             html_h3(method.name)
             method_synopsis(method)
      
      -      if method.comment
      -	html_div("class"=>"method_info") do
      
      +      html_div("class"=>"method_info") do
      +	if method.comment
      
       	  comment_data = method.comment
       	  html_p do
       	    output_doccomment_blocktag(comment_data[0])
      
      @@ -560,12 +560,10 @@
      
       	      document_seealso(comment_data)
       	    end
       	  end
      
      -	end
      -      else
      -	if method.containing_type.is_a?(ASClass)
      -	  spec_method = method.specified_by
      -	  unless spec_method.nil?
      -	    html_div("class"=>"method_info") do
      
      +	else
      +	  if method.containing_type.is_a?(ASClass)
      +	    spec_method = method.specified_by
      +	    unless spec_method.nil?
      
       	      document_specified_by(spec_method)
       	    end
       	  end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 29 21:45:27 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 21:45:27 +0000 Subject: [as2api-dev] [CVS trunk] Factor a common fragment of code out into a method Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+11-12159 -> 160
      Factor a common fragment of code out into a method
      

      trunk/as2api
      html_output.rb 159 -> 160
      --- trunk/as2api/html_output.rb	2005-06-29 21:41:09 UTC (rev 159)
      +++ trunk/as2api/html_output.rb	2005-06-29 21:45:26 UTC (rev 160)
      @@ -550,28 +550,27 @@
      
       	    if comment_has_exceptions?(comment_data)
       	      document_exceptions(comment_data)
       	    end
      
      -	    if method.containing_type.is_a?(ASClass)
      -	      spec_method = method.specified_by
      -	      unless spec_method.nil?
      -		document_specified_by(spec_method)
      -	      end
      -	    end
      
      +	    method_info_from_supertype(method)
      
       	    if comment_has_seealso?(comment_data)
       	      document_seealso(comment_data)
       	    end
       	  end
       	else
      
      -	  if method.containing_type.is_a?(ASClass)
      -	    spec_method = method.specified_by
      -	    unless spec_method.nil?
      -	      document_specified_by(spec_method)
      -	    end
      -	  end
      
      +	  method_info_from_supertype(method)
      
       	end
             end
           end
         end
       
      
      +  def method_info_from_supertype(method)
      +    if method.containing_type.is_a?(ASClass)
      +      spec_method = method.specified_by
      +      unless spec_method.nil?
      +	document_specified_by(spec_method)
      +      end
      +    end
      +  end
      +
      
         def type_hierachy(type)
           # TODO: ASCII art is an accessability problem.  Replace with images that
           #       have alt-text, or use CSS to generate content, e.g.
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 29 21:54:38 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 21:54:38 +0000 Subject: [as2api-dev] [CVS trunk] Document overridden methods Message-ID:
      Commit in trunk/as2api on MAIN
      api_model.rb+7160 -> 161
      html_output.rb+13160 -> 161
      +20
      2 modified files
      Document overridden methods
      

      trunk/as2api
      api_model.rb 160 -> 161
      --- trunk/as2api/api_model.rb	2005-06-29 21:45:26 UTC (rev 160)
      +++ trunk/as2api/api_model.rb	2005-06-29 21:54:38 UTC (rev 161)
      @@ -277,6 +277,13 @@
      
           end
           nil
         end
      
      +
      +  def overrides
      +    containing_type.each_ancestor do |as_class|
      +      as_method = as_class.get_method_called(name)
      +      return as_method unless as_method.nil?
      +    end
      +  end
      
       end
       
       # A field member, which may appear in an ASClass, but not an ASInterface
      

      trunk/as2api
      html_output.rb 160 -> 161
      --- trunk/as2api/html_output.rb	2005-06-29 21:45:26 UTC (rev 160)
      +++ trunk/as2api/html_output.rb	2005-06-29 21:54:38 UTC (rev 161)
      @@ -569,6 +569,10 @@
      
       	document_specified_by(spec_method)
             end
           end
      
      +    overridden_method = method.overrides
      +    unless overridden_method.nil?
      +      document_overridden(overridden_method)
      +    end
      
         end
       
         def type_hierachy(type)
      
      @@ -671,6 +675,15 @@
      
           end
         end
       
      
      +  def document_overridden(method)
      +    html_h4("Overrides")
      +    html_p("class"=>"extra_info") do
      +      link_method(method)
      +      pcdata(" in ")
      +      link_type(method.containing_type, true)
      +    end
      +  end
      +
      
         def method_additional_info?(method, comment_data)
           if method.containing_type.is_a?(ASClass)
             spec_method = method.specified_by
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 29 22:10:09 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 22:10:09 +0000 Subject: [as2api-dev] [CVS trunk] Have navgation frames make use of link_type()'s fomatting capabilities Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+4-5161 -> 162
      Have navgation frames make use of link_type()'s fomatting capabilities
      

      trunk/as2api
      html_output.rb 161 -> 162
      --- trunk/as2api/html_output.rb	2005-06-29 21:54:38 UTC (rev 161)
      +++ trunk/as2api/html_output.rb	2005-06-29 22:10:08 UTC (rev 162)
      @@ -245,8 +245,7 @@
      
           base_path(type.qualified_name.gsub(/\./, "/")+".html")
         end
       
      
      -  def link_type(type, qualified=false)
      -    attrs = {}
      
      +  def link_type(type, qualified=false, attrs={})
      
           if type.instance_of?(ASInterface)
             attrs["class"] = "interface_name"
             attrs["title"] = "Interface #{type.qualified_name}"
      
      @@ -1154,7 +1153,7 @@
      
       	    interfaces.each do |type|
       	  
       	      html_li do
      
      -		html_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      
      +		link_type(type, false, {"target"=>"type_frame"})
      
       	      end
       	    end
       	  end
      
      @@ -1167,7 +1166,7 @@
      
       	    classes.each do |type|
       	  
       	      html_li do
      
      -		html_a(type.unqualified_name, {"href"=>type.unqualified_name+".html", "target"=>"type_frame", "title"=>type.qualified_name})
      
      +		link_type(type, false, {"target"=>"type_frame"})
      
       	      end
       	    end
       	  end
      
      @@ -1297,7 +1296,7 @@
      
       	    if type.document?
       	      href = type.qualified_name.gsub(/\./, "/") + ".html"
       	      html_li do
      
      -		html_a(type.unqualified_name, {"href"=>href, "title"=>type.qualified_name, "target"=>"type_frame"})
      
      +		link_type(type, false, {"target"=>"type_frame"})
      
       	      end
       	    end
       	  end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 29 22:56:56 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 22:56:56 +0000 Subject: [as2api-dev] [CVS trunk] Allow undocumented methods to inherit docs from overriding / specifying methods Message-ID:
      Commit in trunk/as2api on MAIN
      api_model.rb+12162 -> 163
      html_output.rb+21162 -> 163
      +33
      2 modified files
      Allow undocumented methods to inherit docs from overriding / specifying methods
      

      trunk/as2api
      api_model.rb 162 -> 163
      --- trunk/as2api/api_model.rb	2005-06-29 22:10:08 UTC (rev 162)
      +++ trunk/as2api/api_model.rb	2005-06-29 22:56:52 UTC (rev 163)
      @@ -284,6 +284,18 @@
      
             return as_method unless as_method.nil?
           end
         end
      
      +
      +  def inherited_comment
      +    raise "method #{name.inspect} has a comment of its own" unless comment.nil?
      +    containing_type.each_ancestor do |as_class|
      +      as_method = as_class.get_method_called(name)
      +      return as_method unless as_method.nil? || as_method.comment.nil?
      +    end
      +    containing_type.each_implemented_interface do |as_interface|
      +      as_method = as_interface.get_method_called(name)
      +      return as_method unless as_method.nil? || as_method.comment.nil?
      +    end
      +  end
      
       end
       
       # A field member, which may appear in an ASClass, but not an ASInterface
      

      trunk/as2api
      html_output.rb 162 -> 163
      --- trunk/as2api/html_output.rb	2005-06-29 22:10:08 UTC (rev 162)
      +++ trunk/as2api/html_output.rb	2005-06-29 22:56:52 UTC (rev 163)
      @@ -40,6 +40,16 @@
      
       	padding-left: 3em;
       }
       
      
      +p.inherited_docs {
      +	margin-bottom: 0;
      +	font-weight: bolder;
      +	-moz-opacity: 0.5;
      +	font-size: smaller;
      +}
      +p.inherited_docs+p {
      +	margin-top: 0;
      +}
      +
      
       .alt_row {
       	background-color: #eeeeee;
       }
      
      @@ -555,6 +565,17 @@
      
       	    end
       	  end
       	else
      
      +	  documented_method = method.inherited_comment
      +	  unless documented_method.nil?
      +	    comment_data = documented_method.comment
      +	    html_p("class"=>"inherited_docs") do
      +	      pcdata("Description copied from ")
      +	      link_type(documented_method.containing_type)
      +	    end
      +	    html_p do
      +	      output_doccomment_blocktag(comment_data[0])
      +	    end
      +	  end
      
       	  method_info_from_supertype(method)
       	end
             end
      
      CVSspam 0.2.11
      From dave at badgers-in-foil.co.uk Wed Jun 29 23:11:45 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 29 Jun 2005 23:11:45 +0000 Subject: [as2api-dev] [CVS trunk] Since function now only has a single user, inline it again Message-ID:
      Commit in trunk/as2api on MAIN
      html_output.rb+7-14163 -> 164
      Since function now only has a single user, inline it again
      

      trunk/as2api
      html_output.rb 163 -> 164
      --- trunk/as2api/html_output.rb	2005-06-29 22:56:52 UTC (rev 163)
      +++ trunk/as2api/html_output.rb	2005-06-29 23:11:43 UTC (rev 164)
      @@ -163,18 +163,6 @@
      
       end
       
       
      
      -# accessability; make a link to skip over the (navigation) elements produced
      -# by the given block
      -def skip_nav(out)
      -  out.html_div do
      -    out.html_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
      -  end
      -  yield
      -  out.html_div do
      -    out.html_a("", {"name"=>"skip_nav"})
      -  end
      -end
      -
      
       PROJECT_PAGE = "http://www.badgers-in-foil.co.uk/projects/as2api/"
       
       class Page
      
      @@ -304,9 +292,14 @@
      
       class BasicPage < Page
         def generate_content
           html_body do
      
      -      skip_nav(self) do
      -	navigation
      
      +      # accessability; make a link to skip over the initial navigation elements
      +      html_div do
      +	html_a("", {"href"=>"#skip_nav", "title"=>"Skip navigation"})
      
             end
      
      +      navigation
      +      html_div do
      +	html_a("", {"name"=>"skip_nav"})
      +      end
      
             generate_body_content
             navigation
             generate_footer
      
      CVSspam 0.2.11
      From chris at re-structure.net Thu Jun 30 00:30:20 2005 From: chris at re-structure.net (chris k||re-structure) Date: Thu, 30 Jun 2005 02:30:20 +0200 Subject: [as2api-dev] as2api-dev command tool step by step? In-Reply-To: <20050629214601.32627.84223.Mailman@vhost.badgers-in-foil.co.uk> Message-ID: <200563023020.864573@re-structure>
      hey,
       
      i keep on getting the following= error:
      E:\as2pi>as2api --output-dir= D:\AS--classpath D:\client net.re_structure.*
      error: No source files matching specified= packages
       
      hmm, but that's how the package is being= called though... how should i go about in order to track down my mistake= here? this part here did work just fine
       
      E:\as2api --help
       
      a bunch of parameters were being shown...= though the document generation failed =3D(
       
      thanks,
      chris

      >>
      >
      >=A0Sure. =A0First thing is, getting the= software to run at all. =A0Try a>=A0basic= test:
      >
      >=A0C:\>c:\applications\as2api= --help
      >=A0Usage:
      >=A0[..some path..]\as2api.rb [options]= <package spec>=A0...>
      >=A0[..rest of usage= message..]
      >
      >
      >=A0If you get a usage message, the= next step is to work out where you>=A0want the output to= appear. =A0I'm going to guess 'D:\someFolder\' is
      >=A0where all the files are this= project are, so we'll put the docs>=A0there too, using the= --output-dir option.
      >
      >=A0You'll need to tell as2api where to= find your code. =A0This is done>=A0using the= --classpath option. =A0You can actually specify multiple
      >=A0places to look for code, but I'll= assume that you've got everything>=A0in= 'D:\someFolder\as'.
      >
      >=A0Last, you have to specify what= ActionScript packages should be>=A0documented. =A0This is= currently mandatory, and there's no way to
      >=A0specify the 'default' or 'top= level' package yet (i.e. the package
      >=A0in which the standard String and= MovieClip classes exist). =A0Sorry>=A0about that :) I'll= assume that your code uses packages with names
      >=A0beginning with= 'net.restructure'.
      >
      >=A0So combining these three things= together, you need to run a command>=A0line something= like,
      >
      >=A0c:\applications\as2api --output-dir= D:\someFolder\apidocs -->=A0classpath= D:\someFolder\as net.restructure.*>
      >=A0[For the sake of clarity, I split= the text over three lines; you'll>=A0need to enter it all= on a single line, only pressing return at the
      >=A0end.]
      >
      >=A0Hopefully, after complaining about= not-too-many things that it>=A0doesn't understand,= or can't cope with yet, you should find lots of
      >=A0HTML files in the newly-created= 'D:\someFolder\apidocs' folder.>
      >=A0If not; cut an paste any error= messages that you see at the command
      >=A0line into an email, and we can try= to work out what's wrong.>
      >
      >=A0good luck,
      >=A0dave
      >
      >=A0--
      >=A0http://david.holroyd.me.uk/
      >
      >
      From dave at badgers-in-foil.co.uk Thu Jun 30 07:41:29 2005 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 30 Jun 2005 07:41:29 +0000 Subject: [as2api-dev] as2api-dev command tool step by step? In-Reply-To: <200563023020.864573@re-structure> References: <20050629214601.32627.84223.Mailman@vhost.badgers-in-foil.co.uk> <200563023020.864573@re-structure> Message-ID: <20050630074129.GA8690@vhost.badgers-in-foil.co.uk> On Thu, Jun 30, 2005 at 02:30:20AM +0200, chris k||re-structure wrote: > i keep on getting the following error: > E:\as2pi>as2api --output-dir D:\AS--classpath D:\client net.re_structure.* > error: No source files matching specified packages What you've got above lacks a space between the output folder's name, and the --classpath option that follows. Try as2api --output-dir D:\AS\apidocs --classpath D:\client net.re_structure.* > hmm, but that's how the package is being called though... how should i go > about in order to track down my mistake here? this part here did work just > fine If you still get the same problem even with a space there, are your classes located in the folder 'D:\client\net\re_structure' (or subfolders)? The name of the folder needs to match the name of the package very closely. any good? dave -- http://david.holroyd.me.uk/