changeset 5695:b1402d7ce6ef octave-forge

Improve package index page
author hauberg
date Sun, 31 May 2009 15:17:58 +0000
parents 38708a4d861b
children 76238ee640ab
files extra/generate_html/inst/generate_html_manual.m extra/generate_html/inst/generate_package_html.m extra/generate_html/inst/get_html_options.m
diffstat 3 files changed, 142 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/extra/generate_html/inst/generate_html_manual.m	Sat May 30 09:53:50 2009 +0000
+++ b/extra/generate_html/inst/generate_html_manual.m	Sun May 31 15:17:58 2009 +0000
@@ -116,7 +116,8 @@
   root = get_root (outdir, full_fun_dir);
   options.include_package_list_item = false;
   options.include_package_page = false;
-      options.include_overview = false;
+  options.include_overview = false;
+  options.include_package_license = false;
   for k = 1:length (index)
     if (!isempty (index {k}))
       printf ("Chapter: %s\n", index {k}.name); fflush (stdout);
--- a/extra/generate_html/inst/generate_package_html.m	Sat May 30 09:53:50 2009 +0000
+++ b/extra/generate_html/inst/generate_package_html.m	Sun May 31 15:17:58 2009 +0000
@@ -240,28 +240,155 @@
 
     fprintf (fid, "%s\n", header); 
     fprintf (fid, "<h2 class=\"tbdesc\">%s</h2>\n\n", desc.name);
-    fprintf (fid, "<table id=\"main_package_table\">\n");
-    fprintf (fid, "<tr><td>Package Name:</td><td>%s</td></tr>\n", desc.name);
-    fprintf (fid, "<tr><td>Package Version:</td><td>%s</td></tr>\n", list.version);
+
+    fprintf (fid, "<table>\n");
+    fprintf (fid, "<tr><td rowspan=\"2\" class=\"box_table\">\n");
+    fprintf (fid, "<div class=\"package_box\">\n");
+    fprintf (fid, "  <div class=\"package_box_header\">%s</div>\n", desc.name);
+    fprintf (fid, "  <div class=\"package_box_contents\">\n");
+    fprintf (fid, "    <table>\n");
+    fprintf (fid, "      <tr><td class=\"package_table\">Package Version:</td><td>%s</td></tr>\n",
+            list.version);
+    fprintf (fid, "      <tr><td class=\"package_table\">Last Release Date:</td><td>%s</td></tr>\n",
+             list.date);
+    fprintf (fid, "      <tr><td class=\"package_table\">Package Author:</td><td>%s</td></tr>\n",
+             list.author);
+    fprintf (fid, "      <tr><td class=\"package_table\">Package Maintainer:</td><td>%s</td></tr>\n",
+             list.maintainer);
+    fprintf (fid, "      <tr><td class=\"package_table\">License:</td><td><a href=\"COPYING.html\">");
     if (isfield (list, "license"))
-      fprintf (fid, "<tr><td>Package License:</td><td>%s</td></tr>\n", list.license);
+      fprintf (fid, "%s</a></td></tr>\n", list.license);
+    else
+      fprintf (fid, "Read license</a></td></tr>\n");
     endif
-
+    fprintf (fid, "    </table>\n");
+    fprintf (fid, "  </div>\n");
+    fprintf (fid, "</div>\n");
+    fprintf (fid, "</td>\n\n");
+    
+    fprintf (fid, "<td>\n");
     if (isfield (options, "download_link"))
+      fprintf (fid, "<div class=\"download_package\">\n");
+      fprintf (fid, "  <table><tr><td>\n");
+      fprintf (fid, "    <img src=\"../download.png\"/>\n");
+      fprintf (fid, "  </td><td>\n");
       link = strrep (options.download_link, "%name", desc.name);
       link = strrep (link, "%version", desc.version);
-      fprintf (fid, "<tr><td colspan=\"2\"><img src=\"../download.png\" alt=\"Download\"/>");
-      fprintf (fid, "<a href=\"%s\">Download this package</a></td></tr>\n", link);
+      fprintf (fid, "    <a href=\"%s\"\n", link);
+      fprintf (fid, "     class=\"download_link\">\n");
+      fprintf (fid, "      Download Package\n");
+      fprintf (fid, "    </a>\n");
+      fprintf (fid, "  </td></tr></table>\n");
+      fprintf (fid, "</div>\n");
+    endif
+    fprintf (fid, "</td></tr>\n");
+    fprintf (fid, "<tr><td>\n");
+    fprintf (fid, "<div class=\"package_function_reference\">\n");
+    fprintf (fid, "  <table><tr><td>\n");
+    fprintf (fid, "    <img src=\"../doc.png\"/>\n");
+    fprintf (fid, "  </td><td>\n");
+    fprintf (fid, "    <a href=\"%s\" class=\"function_reference_link\">\n", overview_filename);
+    fprintf (fid, "      Function Reference\n");
+    fprintf (fid, "    </a>\n");
+    fprintf (fid, "  </td></tr></table>\n");
+    fprintf (fid, "</div>\n");
+    fprintf (fid, "</td></tr>\n");
+    fprintf (fid, "</table>\n\n");
+
+    fprintf (fid, "<h3>Description</h3>\n");
+    fprintf (fid, "  <div id=\"description_box\">\n")
+    fprintf (fid, list.description);
+    fprintf (fid, "  </div>\n\n")
+
+    fprintf (fid, "<h3>Details</h3>\n");
+    fprintf (fid, "  <table id=\"extra_package_table\">\n");
+    
+    if (isfield (list, "depends"))
+      fprintf (fid, "    <tr><td>Dependencies: </td><td>\n");
+      for k = 1:length (list.depends)
+        p = list.depends {k}.package;
+        if (isfield (list.depends {k}, "operator") && isfield (list.depends {k}, "version"))
+          o = list.depends {k}.operator;
+          v = list.depends {k}.version;
+          vt = sprintf ("(%s %s) ", o, v);
+        else
+          vt = "";
+        endif
+      
+        if (strcmpi (p, "octave"))
+          fprintf (fid, "<a href=\"http://www.octave.org\">Octave</a> ");
+        else
+          fprintf (fid, "<a href=\"../%s\">%s</a> ", p, p);
+        endif
+        fprintf (fid, vt);
+      endfor
+      fprintf (fid, "</td></tr>\n");
+    endif
+  
+    if (isfield (list, "buildrequires"))
+      fprintf (fid, "    <tr><td>Build Dependencies:</td><td>%s</td></tr>\n", list.buildrequires);
+    endif
+  
+    if (isfield (list, "autoload"))
+      if (list.autoload)
+        a = "Yes";
+      else
+        a = "No";
+      endif
+      fprintf (fid, "    <tr><td>Autoload:</td><td>%s</td></tr>\n", a);
+    endif
+  
+    fprintf (fid, "  </table>\n\n");
+  
+    fprintf (fid, "\n%s\n", footer);
+    fclose (fid);
+  endif
+
+  ######################
+  ## Write COPYING file ##
+  ######################
+  if (isfield (options, "include_package_license") && options.include_package_license)
+    ## Get detailed information about the package
+    all_list = pkg ("list");
+    list = [];
+    for k = 1:length (all_list)
+      if (strcmp (all_list {k}.name, packname))
+        list = all_list {k};
+      endif
+    endfor
+    if (isempty (list))
+      error ("generate_package_html: couldn't locate package '%s'", packname);
     endif
 
-    fprintf (fid, "<tr><td colspan=\"2\"><img src=\"../doc.png\" alt=\"Function Reference\"/>");
-    fprintf (fid, "<a href=\"%s\">Read package function reference</a></td></tr>\n", overview_filename);
+    ## Read license
+    filename = fullfile (list.dir, "packinfo", "COPYING");
+    fid = fopen (filename, "r");
+    if (fid < 0)
+      error ("generate_package_html: couldn't open license for reading");
+    endif
+    contents = char (fread (fid).');
+    fclose (fid);
+
+    ## Open output file
+    copying_filename = "COPYING.html";
 
-    fprintf (fid, "</table>\n");
+    if (!exist (fullfile (outdir, packname), "dir"))
+      mkdir (fullfile (outdir, packname));
+    endif
+
+    fid = fopen (fullfile (outdir, packname, copying_filename), "w");
+    if (fid < 0)
+      error ("generate_package_html: couldn't open COPYING file for writing");
+    endif
   
-    fprintf (fid, "<div id=\"description_box\">\n");
-    fprintf (fid, "%s\n</div>\n", desc.description);
+    ## Write output
+    [header, title, footer] = get_index_header_title_and_footer (options, desc.name, "../");
+    
+    fprintf (fid, "%s\n", header); 
+    fprintf (fid, "<h2 class=\"tbdesc\">License for '%s' Package</h2>\n\n", desc.name);
 
+    fprintf (fid, "<pre>%s</pre>\n\n", contents);
+    
     fprintf (fid, "\n%s\n", footer);
     fclose (fid);
   endif
--- a/extra/generate_html/inst/get_html_options.m	Sat May 30 09:53:50 2009 +0000
+++ b/extra/generate_html/inst/get_html_options.m	Sun May 31 15:17:58 2009 +0000
@@ -142,6 +142,7 @@
       ## Options for index package
       options.download_link = "http://downloads.sourceforge.net/octave/%name-%version.tar.gz?download";
       options.include_package_page = true;
+      options.include_package_license = true;
       
     case "octave"
       options.header = "__HEADER__(`%title')";