version 1.210, 2014/11/17 06:44:58 |
version 1.217, 2014/12/23 09:31:46 |
|
|
#include <string.h> |
#include <string.h> |
#include <unistd.h> |
#include <unistd.h> |
|
|
#include "mandoc.h" |
|
#include "mandoc_aux.h" |
#include "mandoc_aux.h" |
|
#include "mdoc.h" |
#include "out.h" |
#include "out.h" |
#include "html.h" |
#include "html.h" |
#include "mdoc.h" |
|
#include "main.h" |
#include "main.h" |
|
|
#define INDENT 5 |
#define INDENT 5 |
Line 183 static const struct htmlmdoc mdocs[MDOC_MAX] = { |
|
Line 182 static const struct htmlmdoc mdocs[MDOC_MAX] = { |
|
{mdoc_quote_pre, mdoc_quote_post}, /* Bq */ |
{mdoc_quote_pre, mdoc_quote_post}, /* Bq */ |
{mdoc_xx_pre, NULL}, /* Bsx */ |
{mdoc_xx_pre, NULL}, /* Bsx */ |
{mdoc_bx_pre, NULL}, /* Bx */ |
{mdoc_bx_pre, NULL}, /* Bx */ |
{NULL, NULL}, /* Db */ |
{mdoc_skip_pre, NULL}, /* Db */ |
{NULL, NULL}, /* Dc */ |
{NULL, NULL}, /* Dc */ |
{mdoc_quote_pre, mdoc_quote_post}, /* Do */ |
{mdoc_quote_pre, mdoc_quote_post}, /* Do */ |
{mdoc_quote_pre, mdoc_quote_post}, /* Dq */ |
{mdoc_quote_pre, mdoc_quote_post}, /* Dq */ |
|
|
a2width(const char *p, struct roffsu *su) |
a2width(const char *p, struct roffsu *su) |
{ |
{ |
|
|
if ( ! a2roffsu(p, su, SCALE_MAX)) { |
if (a2roffsu(p, su, SCALE_MAX) < 2) { |
su->unit = SCALE_EN; |
su->unit = SCALE_EN; |
su->scale = html_strlen(p); |
su->scale = html_strlen(p); |
} |
} |
Line 423 print_mdoc_node(MDOC_ARGS) |
|
Line 422 print_mdoc_node(MDOC_ARGS) |
|
* the "meta" table state. This will be reopened on the |
* the "meta" table state. This will be reopened on the |
* next table element. |
* next table element. |
*/ |
*/ |
if (h->tblt) { |
if (h->tblt != NULL) { |
print_tblclose(h); |
print_tblclose(h); |
t = h->tags.head; |
t = h->tags.head; |
} |
} |
|
assert(h->tblt == NULL); |
assert(NULL == h->tblt); |
if (mdocs[n->tok].pre && (n->end == ENDBODY_NOT || n->child)) |
if (mdocs[n->tok].pre && ENDBODY_NOT == n->end) |
|
child = (*mdocs[n->tok].pre)(meta, n, h); |
child = (*mdocs[n->tok].pre)(meta, n, h); |
break; |
break; |
} |
} |
Line 454 print_mdoc_node(MDOC_ARGS) |
|
Line 452 print_mdoc_node(MDOC_ARGS) |
|
case MDOC_EQN: |
case MDOC_EQN: |
break; |
break; |
default: |
default: |
if (mdocs[n->tok].post && ENDBODY_NOT == n->end) |
if ( ! mdocs[n->tok].post || n->flags & MDOC_ENDED) |
(*mdocs[n->tok].post)(meta, n, h); |
break; |
|
(*mdocs[n->tok].post)(meta, n, h); |
|
if (n->end != ENDBODY_NOT) |
|
n->pending->flags |= MDOC_ENDED; |
|
if (n->end == ENDBODY_NOSPACE) |
|
h->flags |= HTML_NOSPACE; |
break; |
break; |
} |
} |
} |
} |
Line 1198 mdoc_bd_pre(MDOC_ARGS) |
|
Line 1201 mdoc_bd_pre(MDOC_ARGS) |
|
default: |
default: |
break; |
break; |
} |
} |
if (nn->next && nn->next->line == nn->line) |
if (h->flags & HTML_NONEWLINE || |
|
(nn->next && ! (nn->next->flags & MDOC_LINE))) |
continue; |
continue; |
else if (nn->next) |
else if (nn->next) |
print_text(h, "\n"); |
print_text(h, "\n"); |
Line 1564 mdoc_sp_pre(MDOC_ARGS) |
|
Line 1568 mdoc_sp_pre(MDOC_ARGS) |
|
if (MDOC_sp == n->tok) { |
if (MDOC_sp == n->tok) { |
if (NULL != (n = n->child)) |
if (NULL != (n = n->child)) |
if ( ! a2roffsu(n->string, &su, SCALE_VS)) |
if ( ! a2roffsu(n->string, &su, SCALE_VS)) |
SCALE_VS_INIT(&su, atoi(n->string)); |
su.scale = 1.0; |
} else |
} else |
su.scale = 0.0; |
su.scale = 0.0; |
|
|
|
|
mdoc_pf_post(MDOC_ARGS) |
mdoc_pf_post(MDOC_ARGS) |
{ |
{ |
|
|
h->flags |= HTML_NOSPACE; |
if ( ! (n->next == NULL || n->next->flags & MDOC_LINE)) |
|
h->flags |= HTML_NOSPACE; |
} |
} |
|
|
static int |
static int |
Line 2075 mdoc_quote_pre(MDOC_ARGS) |
|
Line 2080 mdoc_quote_pre(MDOC_ARGS) |
|
case MDOC_Ao: |
case MDOC_Ao: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case MDOC_Aq: |
case MDOC_Aq: |
print_text(h, "\\(la"); |
print_text(h, n->parent->prev != NULL && |
|
n->parent->prev->tok == MDOC_An ? "<" : "\\(la"); |
break; |
break; |
case MDOC_Bro: |
case MDOC_Bro: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
|
|
mdoc_quote_post(MDOC_ARGS) |
mdoc_quote_post(MDOC_ARGS) |
{ |
{ |
|
|
if (MDOC_BODY != n->type) |
if (n->type != MDOC_BODY && n->type != MDOC_ELEM) |
return; |
return; |
|
|
if (MDOC_En != n->tok) |
if ( ! (n->tok == MDOC_En || |
|
(n->tok == MDOC_Eo && n->end == ENDBODY_SPACE))) |
h->flags |= HTML_NOSPACE; |
h->flags |= HTML_NOSPACE; |
|
|
switch (n->tok) { |
switch (n->tok) { |
case MDOC_Ao: |
case MDOC_Ao: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case MDOC_Aq: |
case MDOC_Aq: |
print_text(h, "\\(ra"); |
print_text(h, n->parent->prev != NULL && |
|
n->parent->prev->tok == MDOC_An ? ">" : "\\(ra"); |
break; |
break; |
case MDOC_Bro: |
case MDOC_Bro: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |