version 1.18, 2009/10/03 16:36:06 |
version 1.21, 2009/10/04 09:00:40 |
|
|
#define MDOC_ARGS const struct mdoc_meta *m, \ |
#define MDOC_ARGS const struct mdoc_meta *m, \ |
const struct mdoc_node *n, \ |
const struct mdoc_node *n, \ |
struct html *h |
struct html *h |
#define MAN_ARGS const struct man_meta *m, \ |
|
const struct man_node *n, \ |
|
struct html *h |
|
|
|
struct htmlmdoc { |
struct htmlmdoc { |
int (*pre)(MDOC_ARGS); |
int (*pre)(MDOC_ARGS); |
Line 385 print_mdoc(MDOC_ARGS) |
|
Line 382 print_mdoc(MDOC_ARGS) |
|
static void |
static void |
print_mdoc_head(MDOC_ARGS) |
print_mdoc_head(MDOC_ARGS) |
{ |
{ |
char b[BUFSIZ]; |
|
|
|
print_gen_head(h); |
print_gen_head(h); |
|
bufinit(h); |
|
buffmt(h, "%s(%d)", m->title, m->msec); |
|
|
(void)snprintf(b, BUFSIZ - 1, |
|
"%s(%d)", m->title, m->msec); |
|
|
|
if (m->arch) { |
if (m->arch) { |
(void)strlcat(b, " (", BUFSIZ); |
bufcat(h, " ("); |
(void)strlcat(b, m->arch, BUFSIZ); |
bufcat(h, m->arch); |
(void)strlcat(b, ")", BUFSIZ); |
bufcat(h, ")"); |
} |
} |
|
|
print_otag(h, TAG_TITLE, 0, NULL); |
print_otag(h, TAG_TITLE, 0, NULL); |
print_text(h, b); |
print_text(h, h->buf); |
} |
} |
|
|
|
|
Line 547 mdoc_sh_pre(MDOC_ARGS) |
|
Line 542 mdoc_sh_pre(MDOC_ARGS) |
|
{ |
{ |
struct htmlpair tag[2]; |
struct htmlpair tag[2]; |
const struct mdoc_node *nn; |
const struct mdoc_node *nn; |
|
char link[BUFSIZ]; |
|
|
if (MDOC_HEAD == n->type) { |
if (MDOC_BODY == n->type) { |
|
buffmt(h, "margin-left: %dem;", INDENT); |
|
|
tag[0].key = ATTR_CLASS; |
tag[0].key = ATTR_CLASS; |
tag[0].val = "sec-head"; |
tag[0].val = "sec-body"; |
print_otag(h, TAG_DIV, 1, tag); |
tag[1].key = ATTR_STYLE; |
print_otag(h, TAG_SPAN, 1, tag); |
tag[1].val = h->buf; |
|
|
for (nn = n->child; nn; nn = nn->next) { |
print_otag(h, TAG_DIV, 2, tag); |
bufcat(h, nn->string); |
|
if (nn->next) |
|
bufncat(h, " ", 1); |
|
} |
|
tag[0].key = ATTR_NAME; |
|
tag[0].val = h->buf; |
|
print_otag(h, TAG_A, 1, tag); |
|
return(1); |
return(1); |
} else if (MDOC_BLOCK == n->type) { |
} else if (MDOC_BLOCK == n->type) { |
tag[0].key = ATTR_CLASS; |
tag[0].key = ATTR_CLASS; |
Line 578 mdoc_sh_pre(MDOC_ARGS) |
|
Line 569 mdoc_sh_pre(MDOC_ARGS) |
|
|
|
tag[1].key = ATTR_STYLE; |
tag[1].key = ATTR_STYLE; |
tag[1].val = h->buf; |
tag[1].val = h->buf; |
|
|
print_otag(h, TAG_DIV, 2, tag); |
print_otag(h, TAG_DIV, 2, tag); |
return(1); |
return(1); |
} |
} |
|
|
buffmt(h, "margin-left: %dem;", INDENT); |
link[0] = 0; |
|
for (nn = n->child; nn; nn = nn->next) { |
|
(void)strlcat(link, nn->string, BUFSIZ); |
|
if (nn->next) |
|
(void)strlcat(link, "_", BUFSIZ); |
|
} |
|
|
tag[0].key = ATTR_CLASS; |
tag[0].key = ATTR_CLASS; |
tag[0].val = "sec-body"; |
tag[0].val = "sec-head"; |
tag[1].key = ATTR_STYLE; |
tag[1].key = ATTR_ID; |
tag[1].val = h->buf; |
tag[1].val = link; |
|
|
print_otag(h, TAG_DIV, 2, tag); |
print_otag(h, TAG_DIV, 2, tag); |
return(1); |
return(1); |
Line 599 mdoc_sh_pre(MDOC_ARGS) |
|
Line 594 mdoc_sh_pre(MDOC_ARGS) |
|
static int |
static int |
mdoc_ss_pre(MDOC_ARGS) |
mdoc_ss_pre(MDOC_ARGS) |
{ |
{ |
struct htmlpair tag[2]; |
struct htmlpair tag[3]; |
int i; |
int i; |
const struct mdoc_node *nn; |
const struct mdoc_node *nn; |
|
char link[BUFSIZ]; |
|
|
i = 0; |
i = 0; |
|
|
if (MDOC_BODY == n->type) { |
if (MDOC_BODY == n->type) { |
tag[i].key = ATTR_CLASS; |
tag[i].key = ATTR_CLASS; |
tag[i++].val = "ssec-body"; |
tag[i++].val = "ssec-body"; |
|
|
if (n->parent->next && n->child) { |
if (n->parent->next && n->child) { |
bufcat(h, "margin-bottom: 1em;"); |
bufcat(h, "margin-bottom: 1em;"); |
tag[i].key = ATTR_STYLE; |
tag[i].key = ATTR_STYLE; |
tag[i++].val = h->buf; |
tag[i++].val = h->buf; |
} |
} |
|
|
print_otag(h, TAG_DIV, i, tag); |
print_otag(h, TAG_DIV, i, tag); |
return(1); |
return(1); |
} else if (MDOC_BLOCK == n->type) { |
} else if (MDOC_BLOCK == n->type) { |
tag[i].key = ATTR_CLASS; |
tag[i].key = ATTR_CLASS; |
tag[i++].val = "ssec-block"; |
tag[i++].val = "ssec-block"; |
|
|
if (n->prev) { |
if (n->prev) { |
bufcat(h, "margin-top: 1em;"); |
bufcat(h, "margin-top: 1em;"); |
tag[i].key = ATTR_STYLE; |
tag[i].key = ATTR_STYLE; |
tag[i++].val = h->buf; |
tag[i++].val = h->buf; |
} |
} |
|
|
print_otag(h, TAG_DIV, i, tag); |
print_otag(h, TAG_DIV, i, tag); |
return(1); |
return(1); |
} |
} |
|
|
|
link[0] = 0; |
|
for (nn = n->child; nn; nn = nn->next) { |
|
(void)strlcat(link, nn->string, BUFSIZ); |
|
if (nn->next) |
|
(void)strlcat(link, "_", BUFSIZ); |
|
} |
|
|
buffmt(h, "margin-left: -%dem;", INDENT - HALFINDENT); |
buffmt(h, "margin-left: -%dem;", INDENT - HALFINDENT); |
|
|
tag[0].key = ATTR_CLASS; |
tag[0].key = ATTR_CLASS; |
tag[0].val = "ssec-head"; |
tag[0].val = "ssec-head"; |
tag[1].key = ATTR_STYLE; |
tag[1].key = ATTR_STYLE; |
tag[1].val = h->buf; |
tag[1].val = h->buf; |
|
tag[2].key = ATTR_ID; |
|
tag[2].val = link; |
|
|
print_otag(h, TAG_DIV, 2, tag); |
print_otag(h, TAG_DIV, 3, tag); |
print_otag(h, TAG_SPAN, 1, tag); |
|
|
|
bufinit(h); |
|
for (nn = n->child; nn; nn = nn->next) { |
|
bufcat(h, nn->string); |
|
if (nn->next) |
|
bufcat(h, " "); |
|
} |
|
tag[0].key = ATTR_NAME; |
|
tag[0].val = h->buf; |
|
print_otag(h, TAG_A, 1, tag); |
|
|
|
return(1); |
return(1); |
} |
} |
|
|
Line 1274 mdoc_sx_pre(MDOC_ARGS) |
|
Line 1271 mdoc_sx_pre(MDOC_ARGS) |
|
{ |
{ |
struct htmlpair tag[2]; |
struct htmlpair tag[2]; |
const struct mdoc_node *nn; |
const struct mdoc_node *nn; |
|
char link[BUFSIZ]; |
|
|
bufcat(h, "#"); |
(void)strlcpy(link, "#", BUFSIZ); |
for (nn = n->child; nn; nn = nn->next) { |
for (nn = n->child; nn; nn = nn->next) { |
bufcat(h, nn->string); |
(void)strlcat(link, nn->string, BUFSIZ); |
if (nn->next) |
if (nn->next) |
bufcat(h, " "); |
(void)strlcat(link, "_", BUFSIZ); |
} |
} |
|
|
tag[0].key = ATTR_HREF; |
tag[0].key = ATTR_CLASS; |
tag[0].val = h->buf; |
tag[0].val = "link-sec"; |
tag[1].key = ATTR_CLASS; |
tag[1].key = ATTR_HREF; |
tag[1].val = "link-sec"; |
tag[1].val = link; |
|
|
print_otag(h, TAG_A, 2, tag); |
print_otag(h, TAG_A, 2, tag); |
return(1); |
return(1); |
Line 1438 mdoc_an_pre(MDOC_ARGS) |
|
Line 1436 mdoc_an_pre(MDOC_ARGS) |
|
{ |
{ |
struct htmlpair tag; |
struct htmlpair tag; |
|
|
|
/* TODO: -split and -nosplit (see termp_an_pre()). */ |
|
|
tag.key = ATTR_CLASS; |
tag.key = ATTR_CLASS; |
tag.val = "author"; |
tag.val = "author"; |
print_otag(h, TAG_SPAN, 1, &tag); |
print_otag(h, TAG_SPAN, 1, &tag); |
Line 1616 mdoc_fn_pre(MDOC_ARGS) |
|
Line 1616 mdoc_fn_pre(MDOC_ARGS) |
|
} |
} |
|
|
/* Split apart into type and name. */ |
/* Split apart into type and name. */ |
|
|
tag[0].key = ATTR_CLASS; |
|
tag[0].val = "ftype"; |
|
t = print_otag(h, TAG_SPAN, 1, tag); |
|
|
|
assert(n->child->string); |
assert(n->child->string); |
sp = n->child->string; |
sp = n->child->string; |
while (NULL != (ep = strchr(sp, ' '))) { |
|
sz = MIN((int)(ep - sp), BUFSIZ - 1); |
if ((ep = strchr(sp, ' '))) { |
(void)memcpy(nbuf, sp, (size_t)sz); |
tag[0].key = ATTR_CLASS; |
nbuf[sz] = '\0'; |
tag[0].val = "ftype"; |
print_text(h, nbuf); |
|
sp = ++ep; |
t = print_otag(h, TAG_SPAN, 1, tag); |
|
|
|
while (ep) { |
|
sz = MIN((int)(ep - sp), BUFSIZ - 1); |
|
(void)memcpy(nbuf, sp, (size_t)sz); |
|
nbuf[sz] = '\0'; |
|
print_text(h, nbuf); |
|
sp = ++ep; |
|
ep = strchr(sp, ' '); |
|
} |
|
print_tagq(h, t); |
} |
} |
|
|
print_tagq(h, t); |
|
|
|
tag[0].key = ATTR_CLASS; |
tag[0].key = ATTR_CLASS; |
tag[0].val = "fname"; |
tag[0].val = "fname"; |
t = print_otag(h, TAG_SPAN, 1, tag); |
t = print_otag(h, TAG_SPAN, 1, tag); |
Line 1691 mdoc_sp_pre(MDOC_ARGS) |
|
Line 1694 mdoc_sp_pre(MDOC_ARGS) |
|
break; |
break; |
} |
} |
|
|
buffmt(h, "height: %dem", len); |
buffmt(h, "height: %dem;", len); |
tag.key = ATTR_STYLE; |
tag.key = ATTR_STYLE; |
tag.val = h->buf; |
tag.val = h->buf; |
print_otag(h, TAG_DIV, 1, &tag); |
print_otag(h, TAG_DIV, 1, &tag); |