diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2010-12-20 10:40:11 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2010-12-20 10:40:11 +0000 |
commit | 073891eda234d3d2928f19543a8db60f02cdc36f (patch) | |
tree | d762acac59eaf2e4dae9b4aa1b5ac2d35bed1f09 | |
parent | 0f7b683510e81e238f298d0a46d4512f599fa533 (diff) | |
download | mandoc-073891eda234d3d2928f19543a8db60f02cdc36f.tar.gz |
Give header and footer table cells default widths (using WIDTH and ALIGN
atttributes) if no style is specified.
Give the default-bold elements a B tag instead of a SPAN tag, as this
can be overriden in the stylesheet.
Prune some unused attributes from html.h.
-rw-r--r-- | example.style.css | 18 | ||||
-rw-r--r-- | html.c | 28 | ||||
-rw-r--r-- | html.h | 4 | ||||
-rw-r--r-- | mdoc_html.c | 72 |
4 files changed, 77 insertions, 45 deletions
diff --git a/example.style.css b/example.style.css index 78d915a8..bf3febe4 100644 --- a/example.style.css +++ b/example.style.css @@ -48,8 +48,8 @@ table { margin-top: 0px; margin-bottom: 0px; } span.addr { font-style: italic; font-weight: normal; } /* Address (Ad). */ span.arg { font-style: italic; font-weight: normal; } /* Command argument (Ar). */ span.author { } /* Author name (An). */ -span.cmd { font-style: normal; font-weight: bold; } /* Command (Cm). */ -span.config { font-style: normal; font-weight: bold; } /* Config statement (Cd). */ +b.cmd { font-style: normal; } /* Command (Cm). */ +b.config { font-style: normal; } /* Config statement (Cd). */ span.define { } /* Defines (Dv). */ span.desc { } /* Nd. After em-dash. */ span.diag { font-style: normal; font-weight: bold; } /* Diagnostic (Bl -diag). */ @@ -57,13 +57,13 @@ span.env { } /* Environment variables (Ev). */ span.errno { } /* Error string (Er). */ span.farg { font-style: italic; font-weight: normal; } /* Function argument (Fa, Fn). */ span.file { font-style: italic; font-weight: normal; } /* File (Pa). */ -span.flag { font-style: normal; font-weight: bold; } /* Flag (Fl, Cm). */ -span.fname { font-style: normal; font-weight: bold; } /* Function name (Fa, Fn, Rv). */ +b.flag { font-style: normal; } /* Flag (Fl, Cm). */ +b.fname { font-style: normal; } /* Function name (Fa, Fn, Rv). */ span.ftype { font-style: italic; font-weight: normal; } /* Function types (Ft, Fn). */ -span.includes { font-style: normal; font-weight: bold; } /* Header includes (In). */ +b.includes { font-style: normal; } /* Header includes (In). */ span.lib { } /* Library (Lb). */ -span.macro { font-style: normal; font-weight: bold; } /* Macro-ish thing (Fd). */ -span.name { font-style: normal; font-weight: bold; } /* Name of utility (Nm). */ +b.macro { font-style: normal; } /* Macro-ish thing (Fd). */ +b.name { font-style: normal; } /* Name of utility (Nm). */ span.opt { } /* Options (Op, Oo/Oc). */ span.ref { } /* Citations (Rs). */ span.ref-auth { } /* Reference author (%A). */ @@ -81,8 +81,8 @@ span.ref-title { text-decoration: underline; } /* Reference title (%T). */ span.ref-vol { } /* Reference volume (%V). */ span.type { font-style: italic; font-weight: normal; } /* Variable types (Vt). */ span.unix { } /* Unices (Ux, Ox, Nx, Fx, Bx, Bsx, Dx). */ -span.utility { font-style: normal; font-weight: bold; } /* Name of utility (Ex). */ -span.var { font-style: normal; font-weight: bold; } /* Variables (Rv). */ +b.utility { font-style: normal; } /* Name of utility (Ex). */ +b.var { font-style: normal; } /* Variables (Rv). */ a.link-ext { } /* Off-site link (Lk). */ a.link-includes { } /* Include-file link (In). */ @@ -70,6 +70,7 @@ static const struct htmldata htmltags[TAG_MAX] = { {"blockquote", HTML_CLRLINE}, /* TAG_BLOCKQUOTE */ {"p", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_P */ {"pre", HTML_CLRLINE }, /* TAG_PRE */ + {"b", 0 }, /* TAG_B */ }; static const char *const htmlfonts[HTMLFONT_MAX] = { @@ -79,20 +80,19 @@ static const char *const htmlfonts[HTMLFONT_MAX] = { }; static const char *const htmlattrs[ATTR_MAX] = { - "http-equiv", - "content", - "name", - "rel", - "href", - "type", - "media", - "class", - "style", - "width", - "valign", - "target", - "id", - "summary", + "http-equiv", /* ATTR_HTTPEQUIV */ + "content", /* ATTR_CONTENT */ + "name", /* ATTR_NAME */ + "rel", /* ATTR_REL */ + "href", /* ATTR_HREF */ + "type", /* ATTR_TYPE */ + "media", /* ATTR_MEDIA */ + "class", /* ATTR_CLASS */ + "style", /* ATTR_STYLE */ + "width", /* ATTR_WIDTH */ + "id", /* ATTR_ID */ + "summary", /* ATTR_SUMMARY */ + "align", /* ATTR_ALIGN */ }; static void print_spec(struct html *, enum roffdeco, @@ -46,6 +46,7 @@ enum htmltag { TAG_BLOCKQUOTE, TAG_P, TAG_PRE, + TAG_B, TAG_MAX }; @@ -60,10 +61,9 @@ enum htmlattr { ATTR_CLASS, ATTR_STYLE, ATTR_WIDTH, - ATTR_VALIGN, - ATTR_TARGET, ATTR_ID, ATTR_SUMMARY, + ATTR_ALIGN, ATTR_MAX }; diff --git a/mdoc_html.c b/mdoc_html.c index 311ea311..d0b3d3e8 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -461,15 +461,24 @@ print_mdoc_node(MDOC_ARGS) static void mdoc_root_post(MDOC_ARGS) { - struct htmlpair tag[2]; + struct htmlpair tag[3]; struct tag *t, *tt; char b[DATESIZ]; time2a(m->date, b, DATESIZ); - PAIR_CLASS_INIT(&tag[0], "foot"); - PAIR_SUMMARY_INIT(&tag[1], "Document Footer"); - t = print_otag(h, TAG_TABLE, 2, tag); + PAIR_SUMMARY_INIT(&tag[0], "Document Footer"); + PAIR_CLASS_INIT(&tag[1], "foot"); + if (NULL == h->style) { + PAIR_INIT(&tag[1], ATTR_WIDTH, "100%"); + t = print_otag(h, TAG_TABLE, 3, tag); + PAIR_INIT(&tag[0], ATTR_WIDTH, "50%"); + print_otag(h, TAG_COL, 1, tag); + print_otag(h, TAG_COL, 1, tag); + } else + t = print_otag(h, TAG_TABLE, 2, tag); + + t = print_otag(h, TAG_TBODY, 0, NULL); tt = print_otag(h, TAG_TR, 0, NULL); @@ -480,7 +489,11 @@ mdoc_root_post(MDOC_ARGS) print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "foot-os"); - print_otag(h, TAG_TD, 1, tag); + if (NULL == h->style) { + PAIR_INIT(&tag[1], ATTR_ALIGN, "right"); + print_otag(h, TAG_TD, 2, tag); + } else + print_otag(h, TAG_TD, 1, tag); print_text(h, m->os); print_tagq(h, t); @@ -505,9 +518,19 @@ mdoc_root_pre(MDOC_ARGS) snprintf(title, BUFSIZ - 1, "%s(%s)", m->title, m->msec); - PAIR_CLASS_INIT(&tag[0], "head"); - PAIR_SUMMARY_INIT(&tag[1], "Document Header"); - t = print_otag(h, TAG_TABLE, 2, tag); + PAIR_SUMMARY_INIT(&tag[0], "Document Header"); + PAIR_CLASS_INIT(&tag[1], "head"); + if (NULL == h->style) { + PAIR_INIT(&tag[2], ATTR_WIDTH, "100%"); + t = print_otag(h, TAG_TABLE, 3, tag); + PAIR_INIT(&tag[0], ATTR_WIDTH, "30%"); + print_otag(h, TAG_COL, 1, tag); + print_otag(h, TAG_COL, 1, tag); + print_otag(h, TAG_COL, 1, tag); + } else + t = print_otag(h, TAG_TABLE, 2, tag); + + print_otag(h, TAG_TBODY, 0, NULL); tt = print_otag(h, TAG_TR, 0, NULL); @@ -518,13 +541,21 @@ mdoc_root_pre(MDOC_ARGS) print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "head-vol"); - print_otag(h, TAG_TD, 1, tag); + if (NULL == h->style) { + PAIR_INIT(&tag[1], ATTR_ALIGN, "center"); + print_otag(h, TAG_TD, 2, tag); + } else + print_otag(h, TAG_TD, 1, tag); print_text(h, b); print_stagq(h, tt); PAIR_CLASS_INIT(&tag[0], "head-rtitle"); - print_otag(h, TAG_TD, 1, tag); + if (NULL == h->style) { + PAIR_INIT(&tag[1], ATTR_ALIGN, "right"); + print_otag(h, TAG_TD, 2, tag); + } else + print_otag(h, TAG_TD, 1, tag); print_text(h, title); print_tagq(h, t); @@ -593,7 +624,7 @@ mdoc_fl_pre(MDOC_ARGS) struct htmlpair tag; PAIR_CLASS_INIT(&tag, "flag"); - print_otag(h, TAG_SPAN, 1, &tag); + print_otag(h, TAG_B, 1, &tag); /* `Cm' has no leading hyphen. */ @@ -640,7 +671,7 @@ mdoc_nm_pre(MDOC_ARGS) case (MDOC_ELEM): synopsis_pre(h, n); PAIR_CLASS_INIT(&tag, "name"); - print_otag(h, TAG_SPAN, 1, &tag); + print_otag(h, TAG_B, 1, &tag); if (NULL == n->child && m->name) print_text(h, m->name); return(1); @@ -826,6 +857,7 @@ mdoc_it_pre(MDOC_ARGS) case(LIST_enum): return(0); case(LIST_diag): + /* FIXME: STYLE for diag! */ /* FALLTHROUGH */ case(LIST_hang): /* FALLTHROUGH */ @@ -1010,7 +1042,7 @@ mdoc_ex_pre(MDOC_ARGS) print_text(h, "The"); for (nn = n->child; nn; nn = nn->next) { - t = print_otag(h, TAG_SPAN, 1, &tag); + t = print_otag(h, TAG_B, 1, &tag); print_text(h, nn->string); print_tagq(h, t); @@ -1227,7 +1259,7 @@ mdoc_cd_pre(MDOC_ARGS) synopsis_pre(h, n); PAIR_CLASS_INIT(&tag, "config"); - print_otag(h, TAG_SPAN, 1, &tag); + print_otag(h, TAG_B, 1, &tag); return(1); } @@ -1306,7 +1338,7 @@ mdoc_fd_pre(MDOC_ARGS) synopsis_pre(h, n); PAIR_CLASS_INIT(&tag, "macro"); - print_otag(h, TAG_SPAN, 1, &tag); + print_otag(h, TAG_B, 1, &tag); return(1); } @@ -1395,7 +1427,7 @@ mdoc_fn_pre(MDOC_ARGS) } #endif - t = print_otag(h, TAG_SPAN, 1, tag); + t = print_otag(h, TAG_B, 1, tag); if (sp) { strlcpy(nbuf, sp, BUFSIZ); @@ -1593,7 +1625,7 @@ mdoc_in_pre(MDOC_ARGS) synopsis_pre(h, n); PAIR_CLASS_INIT(&tag[0], "includes"); - print_otag(h, TAG_SPAN, 1, tag); + print_otag(h, TAG_B, 1, tag); if (MDOC_SYNPRETTY & n->flags && MDOC_LINE & n->flags) print_text(h, "#include"); @@ -1629,7 +1661,7 @@ mdoc_ic_pre(MDOC_ARGS) struct htmlpair tag; PAIR_CLASS_INIT(&tag, "cmd"); - print_otag(h, TAG_SPAN, 1, &tag); + print_otag(h, TAG_B, 1, &tag); return(1); } @@ -1671,7 +1703,7 @@ mdoc_rv_pre(MDOC_ARGS) "-1 is returned and the global variable"); PAIR_CLASS_INIT(&tag, "var"); - t = print_otag(h, TAG_SPAN, 1, &tag); + t = print_otag(h, TAG_B, 1, &tag); print_text(h, "errno"); print_tagq(h, t); print_text(h, "is set to indicate the error."); @@ -1686,7 +1718,7 @@ mdoc_va_pre(MDOC_ARGS) struct htmlpair tag; PAIR_CLASS_INIT(&tag, "var"); - print_otag(h, TAG_SPAN, 1, &tag); + print_otag(h, TAG_B, 1, &tag); return(1); } |