*
* TODO:
*
- * - basic vital configuration: Info dir entries in heading, and
- * how to allocate node names
+ * - configurable choice of how to allocate node names
* - escape, warn or simply remove commas and colons in node
* names; also test colons in index terms.
+ * - might be helpful to diagnose duplicate node names too!
* - test everything in info(1), and probably jed too
*
* Later:
/*
* An Info file begins with a piece of introductory text which
* is apparently never shown anywhere. This seems to me to be a
- * good place to put the copyright notice and the version IDs.
- *
- * FIXME: also Info directory entries are expected to go here.
- * This will need to be a configurable thing of some sort.
+ * good place to put the copyright notice and the version IDs.
+ * Also, Info directory entries are expected to go here.
*/
rdaddsc(&intro_text,
rdaddsc(&intro_text, "\n\n");
for (p = sourceform; p; p = p->next)
+ if (p->type == para_Config &&
+ !ustricmp(p->keyword, L"info-dir-entry")) {
+ wchar_t *section, *shortname, *longname, *kw;
+ char *s;
+
+ section = uadv(p->keyword);
+ shortname = *section ? uadv(section) : NULL;
+ longname = *shortname ? uadv(shortname) : NULL;
+ kw = *longname ? uadv(longname) : NULL;
+
+ if (!*longname) {
+ error(err_infodirentry, &p->fpos);
+ continue;
+ }
+
+ rdaddsc(&intro_text, "INFO-DIR-SECTION ");
+ s = utoa_dup(section);
+ rdaddsc(&intro_text, s);
+ sfree(s);
+ rdaddsc(&intro_text, "\nSTART-INFO-DIR-ENTRY\n* ");
+ s = utoa_dup(shortname);
+ rdaddsc(&intro_text, s);
+ sfree(s);
+ rdaddsc(&intro_text, ": (");
+ s = dupstr(conf.filename);
+ if (strlen(s) > 5 && !strcmp(s+strlen(s)-5, ".info"))
+ s[strlen(s)-5] = '\0';
+ rdaddsc(&intro_text, s);
+ sfree(s);
+ rdaddsc(&intro_text, ")");
+ if (*kw) {
+ keyword *kwl = kw_lookup(keywords, kw);
+ if (kwl && kwl->para->private_data) {
+ node *n = (node *)kwl->para->private_data;
+ rdaddsc(&intro_text, n->name);
+ }
+ }
+ rdaddsc(&intro_text, ". ");
+ s = utoa_dup(longname);
+ rdaddsc(&intro_text, s);
+ sfree(s);
+ rdaddsc(&intro_text, "\nEND-INFO-DIR-ENTRY\n\n");
+ }
+
+ for (p = sourceform; p; p = p->next)
if (p->type == para_Copyright)
info_para(&intro_text, NULL, NULL, p->words, keywords,
0, 0, width);
\cfg{xhtml-template-filename}{%k.html}
\cfg{xhtml-template-fragment}{%k}
+\cfg{info-dir-entry}{Documentation}{Halibut}{Multi-format
+documentation processing system}
+
Halibut is a free (MIT-licensed) documentation production system,
able to generate multiple output formats from the same input data.
This document is its user manual.
rights reserved. You may distribute this documentation under the MIT
licence. See \k{licence} for the licence text in full.
-\versionid $Id: blurb.but,v 1.3 2004/04/01 17:54:53 simon Exp $
+\versionid $Id: blurb.but,v 1.4 2004/04/09 18:43:02 simon Exp $