=================================================================== RCS file: /cvs/mandoc/man_html.c,v retrieving revision 1.97 retrieving revision 1.106 diff -u -p -r1.97 -r1.106 --- mandoc/man_html.c 2014/08/10 23:54:41 1.97 +++ mandoc/man_html.c 2014/12/02 10:08:06 1.106 @@ -1,6 +1,6 @@ -/* $Id: man_html.c,v 1.97 2014/08/10 23:54:41 schwarze Exp $ */ +/* $Id: man_html.c,v 1.106 2014/12/02 10:08:06 schwarze Exp $ */ /* - * Copyright (c) 2008-2012 Kristaps Dzonsons + * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons * Copyright (c) 2013, 2014 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any @@ -25,11 +25,10 @@ #include #include -#include "mandoc.h" #include "mandoc_aux.h" +#include "man.h" #include "out.h" #include "html.h" -#include "man.h" #include "main.h" /* TODO: preserve ident widths. */ @@ -142,7 +141,7 @@ print_bvspace(struct html *h, const struct man_node *n if (NULL == n->prev) return; - print_otag(h, TAG_P, 0, NULL); + print_paragraph(h); } void @@ -213,21 +212,14 @@ print_man_node(MAN_ARGS) man_root_pre(man, n, mh, h); break; case MAN_TEXT: - /* - * If we have a blank line, output a vertical space. - * If we have a space as the first character, break - * before printing the line's data. - */ if ('\0' == *n->string) { - print_otag(h, TAG_P, 0, NULL); + print_paragraph(h); return; } - - if (' ' == *n->string && MAN_LINE & n->flags) + if (n->flags & MAN_LINE && (*n->string == ' ' || + (n->prev != NULL && mh->fl & MANH_LITERAL && + ! (h->flags & HTML_NONEWLINE)))) print_otag(h, TAG_BR, 0, NULL); - else if (MANH_LITERAL & mh->fl && n->prev) - print_otag(h, TAG_BR, 0, NULL); - print_text(h, n->string); return; case MAN_EQN: @@ -299,7 +291,7 @@ a2width(const struct man_node *n, struct roffsu *su) static void man_root_pre(MAN_ARGS) { - struct htmlpair tag[3]; + struct htmlpair tag; struct tag *t, *tt; char *title; @@ -307,34 +299,26 @@ man_root_pre(MAN_ARGS) assert(man->msec); mandoc_asprintf(&title, "%s(%s)", man->title, man->msec); - PAIR_SUMMARY_INIT(&tag[0], "Document Header"); - PAIR_CLASS_INIT(&tag[1], "head"); - 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); + PAIR_CLASS_INIT(&tag, "head"); + t = print_otag(h, TAG_TABLE, 1, &tag); print_otag(h, TAG_TBODY, 0, NULL); tt = print_otag(h, TAG_TR, 0, NULL); - PAIR_CLASS_INIT(&tag[0], "head-ltitle"); - print_otag(h, TAG_TD, 1, tag); + PAIR_CLASS_INIT(&tag, "head-ltitle"); + print_otag(h, TAG_TD, 1, &tag); print_text(h, title); print_stagq(h, tt); - PAIR_CLASS_INIT(&tag[0], "head-vol"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "center"); - print_otag(h, TAG_TD, 2, tag); + PAIR_CLASS_INIT(&tag, "head-vol"); + print_otag(h, TAG_TD, 1, &tag); if (NULL != man->vol) print_text(h, man->vol); print_stagq(h, tt); - PAIR_CLASS_INIT(&tag[0], "head-rtitle"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "right"); - print_otag(h, TAG_TD, 2, tag); + PAIR_CLASS_INIT(&tag, "head-rtitle"); + print_otag(h, TAG_TD, 1, &tag); print_text(h, title); print_tagq(h, t); free(title); @@ -343,29 +327,23 @@ man_root_pre(MAN_ARGS) static void man_root_post(MAN_ARGS) { - struct htmlpair tag[3]; + struct htmlpair tag; struct tag *t, *tt; - PAIR_SUMMARY_INIT(&tag[0], "Document Footer"); - PAIR_CLASS_INIT(&tag[1], "foot"); - PAIR_INIT(&tag[2], 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); + PAIR_CLASS_INIT(&tag, "foot"); + t = print_otag(h, TAG_TABLE, 1, &tag); tt = print_otag(h, TAG_TR, 0, NULL); - PAIR_CLASS_INIT(&tag[0], "foot-date"); - print_otag(h, TAG_TD, 1, tag); + PAIR_CLASS_INIT(&tag, "foot-date"); + print_otag(h, TAG_TD, 1, &tag); assert(man->date); print_text(h, man->date); print_stagq(h, tt); - PAIR_CLASS_INIT(&tag[0], "foot-os"); - PAIR_INIT(&tag[1], ATTR_ALIGN, "right"); - print_otag(h, TAG_TD, 2, tag); + PAIR_CLASS_INIT(&tag, "foot-os"); + print_otag(h, TAG_TD, 1, &tag); if (man->source) print_text(h, man->source); @@ -552,7 +530,7 @@ man_IP_pre(MAN_ARGS) static int man_HP_pre(MAN_ARGS) { - struct htmlpair tag; + struct htmlpair tag[2]; struct roffsu su; const struct man_node *np; @@ -572,8 +550,9 @@ man_HP_pre(MAN_ARGS) bufcat_su(h, "margin-left", &su); su.scale = -su.scale; bufcat_su(h, "text-indent", &su); - PAIR_STYLE_INIT(&tag, h); - print_otag(h, TAG_P, 1, &tag); + PAIR_STYLE_INIT(&tag[0], h); + PAIR_CLASS_INIT(&tag[1], "spacer"); + print_otag(h, TAG_DIV, 2, tag); return(1); }