summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-12-20 10:40:11 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-12-20 10:40:11 +0000
commit073891eda234d3d2928f19543a8db60f02cdc36f (patch)
treed762acac59eaf2e4dae9b4aa1b5ac2d35bed1f09
parent0f7b683510e81e238f298d0a46d4512f599fa533 (diff)
downloadmandoc-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.css18
-rw-r--r--html.c28
-rw-r--r--html.h4
-rw-r--r--mdoc_html.c72
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). */
diff --git a/html.c b/html.c
index cfe5da16..f30aac09 100644
--- a/html.c
+++ b/html.c
@@ -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,
diff --git a/html.h b/html.h
index 4c2b933d..ceeca137 100644
--- a/html.h
+++ b/html.h
@@ -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);
}