Generate autodoc index with SML/NJ HTML lib
[jyaworski/domtool2.git] / src / autodoc.sml
index fae4495..71ff33d 100644 (file)
@@ -87,6 +87,12 @@ fun autodoc {outdir, infiles} =
                                                       P {align = NONE,
                                                          content = PCDATA desc}]
 
+               val summaries = foldr (fn ((d, desc, _), summaries) =>
+                                       HtmlPrint.output (p_decl_fref (annotate_decl d))
+                                       :: BR {clear = NONE}
+                                       :: summaries)
+                                   [] decls
+
                val entries = map (fn (d, desc, _) =>
                                      let
                                          val cblock = HtmlPrint.output (p_decl (annotate_decl d))
@@ -100,7 +106,17 @@ fun autodoc {outdir, infiles} =
                                                     dblock]
                                      end) decls
 
-               val body = BlockList (body :: entries)
+               val body = BlockList (body
+                                     :: HR {align = NONE,
+                                            noshade = false,
+                                            size = NONE,
+                                            width = NONE}
+                                     :: TextBlock (TT (TextList summaries))
+                                     :: HR {align = NONE,
+                                            noshade = false,
+                                            size = NONE,
+                                            width = NONE}
+                                     :: entries)
 
                val html = HTML {version = NONE,
                                 head = [Head_TITLE title],
@@ -112,34 +128,43 @@ fun autodoc {outdir, infiles} =
                                              alink = NONE,
                                              content = body}}
            in
-               (*TextIO.output (outf, Config.Autodoc.htmlHeader ("Domtool Module " ^ uppercase file'));
-               Option.app (fn desc => (TextIO.output (outf, desc);
-                                       TextIO.output (outf, "\n"))) desc;
-
-               app doDecl decls;
-
-               TextIO.output (outf, Config.Autodoc.htmlFooter);*)
                PrHTML.prHTML {putc = (fn ch => TextIO.output1 (outf, ch)),
                               puts = (fn s => TextIO.output (outf, s))} html;
                TextIO.closeOut outf
            end
 
+       val title = "Domtool Module Index"
+
+       val items = map (fn file =>
+                           let
+                               val file' = modify file
+                           in
+                               LI {ty = NONE,
+                                   value = NONE,
+                                   content = TextBlock (A {name = NONE,
+                                                           href = SOME (file' ^ ".html"),
+                                                           rel = NONE,
+                                                           rev = NONE,
+                                                           title = NONE,
+                                                           content = PCDATA (uppercase file')})}
+                           end) infiles
+
+       val index = HTML {version = NONE,
+                         head = [Head_TITLE title],
+                         body = BODY {background = NONE,
+                                      bgcolor = NONE,
+                                      text = NONE,
+                                      link = NONE,
+                                      vlink = NONE,
+                                      alink = NONE,
+                                      content = UL {ty = NONE,
+                                                    compact = false,
+                                                    content = items}}}
+
        val outf = TextIO.openOut (outdir ^ "/index.html")
     in
-       TextIO.output (outf, Config.Autodoc.htmlHeader "Domtool Module Index");
-
-       app (fn file =>
-               let
-                   val file' = modify file
-               in
-                   TextIO.output (outf, "<li> <a href=\"");
-                   TextIO.output (outf, file');
-                   TextIO.output (outf, ".html\">");
-                   TextIO.output (outf, uppercase file');
-                   TextIO.output (outf, "</a></li>\n")
-               end) infiles;
-                        
-       TextIO.output (outf, Config.Autodoc.htmlFooter);
+       PrHTML.prHTML {putc = (fn ch => TextIO.output1 (outf, ch)),
+                      puts = (fn s => TextIO.output (outf, s))} index; 
        TextIO.closeOut outf;
 
        app doFile infiles