version 1.56, 2010/12/22 09:51:27 |
version 1.63, 2011/01/12 10:43:22 |
Line 197 print_man_node(MAN_ARGS) |
|
Line 197 print_man_node(MAN_ARGS) |
|
child = man_root_pre(m, n, mh, h); |
child = man_root_pre(m, n, mh, h); |
break; |
break; |
case (MAN_TEXT): |
case (MAN_TEXT): |
|
if ('\0' == *n->string) { |
|
print_otag(h, TAG_P, 0, NULL); |
|
return; |
|
} |
|
|
|
if (' ' == *n->string && MAN_LINE & n->flags) |
|
print_otag(h, TAG_BR, 0, NULL); |
|
|
print_text(h, n->string); |
print_text(h, n->string); |
|
|
if (MANH_LITERAL & mh->fl) |
if (MANH_LITERAL & mh->fl) |
print_otag(h, TAG_BR, 0, NULL); |
print_otag(h, TAG_BR, 0, NULL); |
|
|
return; |
return; |
|
case (MAN_TBL): |
|
print_tbl(h, n->span); |
|
break; |
default: |
default: |
/* |
/* |
* Close out scope of font prior to opening a macro |
* Close out scope of font prior to opening a macro |
* scope. Assert that the metafont is on the top of the |
* scope. Assert that the metafont is on the top of the |
* stack (it's never nested). |
* stack (it's never nested). |
*/ |
*/ |
if (h->metaf) { |
if (HTMLFONT_NONE != h->metac) { |
assert(h->metaf == t); |
h->metal = h->metac; |
print_tagq(h, h->metaf); |
h->metac = HTMLFONT_NONE; |
assert(NULL == h->metaf); |
|
t = h->tags.head; |
|
} |
} |
if (mans[n->tok].pre) |
if (mans[n->tok].pre) |
child = (*mans[n->tok].pre)(m, n, mh, h); |
child = (*mans[n->tok].pre)(m, n, mh, h); |
Line 232 print_man_node(MAN_ARGS) |
|
Line 240 print_man_node(MAN_ARGS) |
|
case (MAN_ROOT): |
case (MAN_ROOT): |
man_root_post(m, n, mh, h); |
man_root_post(m, n, mh, h); |
break; |
break; |
case (MAN_TEXT): |
case (MAN_TBL): |
break; |
break; |
default: |
default: |
if (mans[n->tok].post) |
if (mans[n->tok].post) |
|
|
man_alt_pre(MAN_ARGS) |
man_alt_pre(MAN_ARGS) |
{ |
{ |
const struct man_node *nn; |
const struct man_node *nn; |
struct tag *t; |
int i; |
int i; |
enum htmltag fp; |
enum htmlfont fp; |
struct tag *t; |
|
|
for (i = 0, nn = n->child; nn; nn = nn->next, i++) { |
for (i = 0, nn = n->child; nn; nn = nn->next, i++) { |
|
t = NULL; |
switch (n->tok) { |
switch (n->tok) { |
case (MAN_BI): |
case (MAN_BI): |
fp = i % 2 ? HTMLFONT_ITALIC : HTMLFONT_BOLD; |
fp = i % 2 ? TAG_I : TAG_B; |
break; |
break; |
case (MAN_IB): |
case (MAN_IB): |
fp = i % 2 ? HTMLFONT_BOLD : HTMLFONT_ITALIC; |
fp = i % 2 ? TAG_B : TAG_I; |
break; |
break; |
case (MAN_RI): |
case (MAN_RI): |
fp = i % 2 ? HTMLFONT_ITALIC : HTMLFONT_NONE; |
fp = i % 2 ? TAG_I : TAG_MAX; |
break; |
break; |
case (MAN_IR): |
case (MAN_IR): |
fp = i % 2 ? HTMLFONT_NONE : HTMLFONT_ITALIC; |
fp = i % 2 ? TAG_MAX : TAG_I; |
break; |
break; |
case (MAN_BR): |
case (MAN_BR): |
fp = i % 2 ? HTMLFONT_NONE : HTMLFONT_BOLD; |
fp = i % 2 ? TAG_MAX : TAG_B; |
break; |
break; |
case (MAN_RB): |
case (MAN_RB): |
fp = i % 2 ? HTMLFONT_BOLD : HTMLFONT_NONE; |
fp = i % 2 ? TAG_B : TAG_MAX; |
break; |
break; |
default: |
default: |
abort(); |
abort(); |
Line 441 man_alt_pre(MAN_ARGS) |
|
Line 450 man_alt_pre(MAN_ARGS) |
|
if (i) |
if (i) |
h->flags |= HTML_NOSPACE; |
h->flags |= HTML_NOSPACE; |
|
|
/* |
if (TAG_MAX != fp) |
* Open and close the scope with each argument, so that |
t = print_otag(h, fp, 0, NULL); |
* internal \f escapes, which are common, are also |
|
* closed out with the scope. |
|
*/ |
|
t = print_ofont(h, fp); |
|
print_man_node(m, nn, mh, h); |
print_man_node(m, nn, mh, h); |
print_tagq(h, t); |
|
|
if (t) |
|
print_tagq(h, t); |
} |
} |
|
|
return(0); |
return(0); |
Line 459 man_alt_pre(MAN_ARGS) |
|
Line 467 man_alt_pre(MAN_ARGS) |
|
static int |
static int |
man_SM_pre(MAN_ARGS) |
man_SM_pre(MAN_ARGS) |
{ |
{ |
struct htmlpair tag; |
|
|
|
/* FIXME: print_ofont(). */ |
print_otag(h, TAG_SMALL, 0, NULL); |
PAIR_CLASS_INIT(&tag, "small"); |
|
print_otag(h, TAG_SPAN, 1, &tag); |
|
if (MAN_SB == n->tok) |
if (MAN_SB == n->tok) |
print_ofont(h, HTMLFONT_BOLD); |
print_otag(h, TAG_B, 0, NULL); |
return(1); |
return(1); |
} |
} |
|
|
Line 509 man_IP_pre(MAN_ARGS) |
|
Line 514 man_IP_pre(MAN_ARGS) |
|
struct roffsu su; |
struct roffsu su; |
struct htmlpair tag; |
struct htmlpair tag; |
const struct man_node *nn; |
const struct man_node *nn; |
int width; |
|
|
|
/* |
/* |
* This scattering of 1-BU margins and pads is to make sure that |
* This scattering of 1-BU margins and pads is to make sure that |
Line 527 man_IP_pre(MAN_ARGS) |
|
Line 531 man_IP_pre(MAN_ARGS) |
|
n->head->child : n->parent->head->child; |
n->head->child : n->parent->head->child; |
|
|
SCALE_HS_INIT(&su, INDENT); |
SCALE_HS_INIT(&su, INDENT); |
width = 0; |
|
|
|
/* Width is the last token. */ |
/* Width is the second token. */ |
|
|
if (MAN_IP == n->tok && NULL != nn) |
if (MAN_IP == n->tok && NULL != nn) |
if (NULL != (nn = nn->next)) { |
if (NULL != (nn = nn->next)) |
for ( ; nn->next; nn = nn->next) |
a2width(nn, &su); |
/* Do nothing. */ ; |
|
width = a2width(nn, &su); |
|
} |
|
|
|
/* Width is the first token. */ |
/* Width is the first token. */ |
|
|
Line 545 man_IP_pre(MAN_ARGS) |
|
Line 545 man_IP_pre(MAN_ARGS) |
|
while (nn && MAN_TEXT != nn->type) |
while (nn && MAN_TEXT != nn->type) |
nn = nn->next; |
nn = nn->next; |
if (nn) |
if (nn) |
width = a2width(nn, &su); |
a2width(nn, &su); |
} |
} |
|
|
if (MAN_BLOCK == n->type) { |
if (MAN_BLOCK == n->type) { |
Line 562 man_IP_pre(MAN_ARGS) |
|
Line 562 man_IP_pre(MAN_ARGS) |
|
|
|
print_otag(h, TAG_TD, 0, NULL); |
print_otag(h, TAG_TD, 0, NULL); |
|
|
/* |
/* For IP, only print the first header element. */ |
* Without a length string, we can print all of our children. |
|
*/ |
|
|
|
if ( ! width) |
if (MAN_IP == n->tok && n->child) |
return(1); |
print_man_node(m, n->child, mh, h); |
|
|
/* |
/* For TP, only print next-line header elements. */ |
* When a length has been specified, we need to carefully print |
|
* our child context: IP gets all children printed but the last |
|
* (the width), while TP gets all children printed but the first |
|
* (the width). |
|
*/ |
|
|
|
if (MAN_IP == n->tok) |
|
for (nn = n->child; nn->next; nn = nn->next) |
|
print_man_node(m, nn, mh, h); |
|
if (MAN_TP == n->tok) |
if (MAN_TP == n->tok) |
for (nn = n->child->next; nn; nn = nn->next) |
for (nn = n->child; nn; nn = nn->next) |
print_man_node(m, nn, mh, h); |
if (nn->line > n->line) |
|
print_man_node(m, nn, mh, h); |
|
|
return(0); |
return(0); |
} |
} |
|
|
man_B_pre(MAN_ARGS) |
man_B_pre(MAN_ARGS) |
{ |
{ |
|
|
print_ofont(h, HTMLFONT_BOLD); |
print_otag(h, TAG_B, 0, NULL); |
return(1); |
return(1); |
} |
} |
|
|
|
|
man_I_pre(MAN_ARGS) |
man_I_pre(MAN_ARGS) |
{ |
{ |
|
|
print_ofont(h, HTMLFONT_ITALIC); |
print_otag(h, TAG_I, 0, NULL); |
return(1); |
return(1); |
} |
} |
|
|