version 1.94, 2010/07/06 12:37:17 |
version 1.103, 2010/09/04 19:01:52 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
|
|
#include "mandoc.h" |
#include "mandoc.h" |
#include "out.h" |
#include "out.h" |
#include "html.h" |
#include "html.h" |
#include "regs.h" |
|
#include "mdoc.h" |
#include "mdoc.h" |
#include "main.h" |
#include "main.h" |
|
|
Line 126 static int mdoc_pq_pre(MDOC_ARGS); |
|
Line 125 static int mdoc_pq_pre(MDOC_ARGS); |
|
static int mdoc_rs_pre(MDOC_ARGS); |
static int mdoc_rs_pre(MDOC_ARGS); |
static int mdoc_rv_pre(MDOC_ARGS); |
static int mdoc_rv_pre(MDOC_ARGS); |
static int mdoc_sh_pre(MDOC_ARGS); |
static int mdoc_sh_pre(MDOC_ARGS); |
|
static int mdoc_sm_pre(MDOC_ARGS); |
static int mdoc_sp_pre(MDOC_ARGS); |
static int mdoc_sp_pre(MDOC_ARGS); |
static void mdoc_sq_post(MDOC_ARGS); |
static void mdoc_sq_post(MDOC_ARGS); |
static int mdoc_sq_pre(MDOC_ARGS); |
static int mdoc_sq_pre(MDOC_ARGS); |
Line 210 static const struct htmlmdoc mdocs[MDOC_MAX] = { |
|
Line 210 static const struct htmlmdoc mdocs[MDOC_MAX] = { |
|
{mdoc_em_pre, NULL}, /* Em */ |
{mdoc_em_pre, NULL}, /* Em */ |
{NULL, NULL}, /* Eo */ |
{NULL, NULL}, /* Eo */ |
{mdoc_xx_pre, NULL}, /* Fx */ |
{mdoc_xx_pre, NULL}, /* Fx */ |
{mdoc_ms_pre, NULL}, /* Ms */ /* FIXME: convert to symbol? */ |
{mdoc_ms_pre, NULL}, /* Ms */ |
{NULL, NULL}, /* No */ |
{NULL, NULL}, /* No */ |
{mdoc_ns_pre, NULL}, /* Ns */ |
{mdoc_ns_pre, NULL}, /* Ns */ |
{mdoc_xx_pre, NULL}, /* Nx */ |
{mdoc_xx_pre, NULL}, /* Nx */ |
Line 228 static const struct htmlmdoc mdocs[MDOC_MAX] = { |
|
Line 228 static const struct htmlmdoc mdocs[MDOC_MAX] = { |
|
{NULL, NULL}, /* Sc */ |
{NULL, NULL}, /* Sc */ |
{mdoc_sq_pre, mdoc_sq_post}, /* So */ |
{mdoc_sq_pre, mdoc_sq_post}, /* So */ |
{mdoc_sq_pre, mdoc_sq_post}, /* Sq */ |
{mdoc_sq_pre, mdoc_sq_post}, /* Sq */ |
{NULL, NULL}, /* Sm */ /* FIXME - no idea. */ |
{mdoc_sm_pre, NULL}, /* Sm */ |
{mdoc_sx_pre, NULL}, /* Sx */ |
{mdoc_sx_pre, NULL}, /* Sx */ |
{mdoc_sy_pre, NULL}, /* Sy */ |
{mdoc_sy_pre, NULL}, /* Sy */ |
{NULL, NULL}, /* Tn */ |
{NULL, NULL}, /* Tn */ |
Line 1183 mdoc_bl_pre(MDOC_ARGS) |
|
Line 1183 mdoc_bl_pre(MDOC_ARGS) |
|
ord = malloc(sizeof(struct ord)); |
ord = malloc(sizeof(struct ord)); |
if (NULL == ord) { |
if (NULL == ord) { |
perror(NULL); |
perror(NULL); |
exit(EXIT_FAILURE); |
exit(MANDOCLEVEL_SYSERR); |
} |
} |
ord->cookie = n; |
ord->cookie = n; |
ord->pos = 1; |
ord->pos = 1; |
Line 1457 mdoc_bd_pre(MDOC_ARGS) |
|
Line 1457 mdoc_bd_pre(MDOC_ARGS) |
|
print_otag(h, TAG_DIV, 2, tag); |
print_otag(h, TAG_DIV, 2, tag); |
|
|
for (nn = n->child; nn; nn = nn->next) { |
for (nn = n->child; nn; nn = nn->next) { |
h->flags |= HTML_NOSPACE; |
|
print_mdoc_node(m, nn, h); |
print_mdoc_node(m, nn, h); |
if (NULL == nn->next) |
if (nn->next && nn->next->line == nn->line) |
continue; |
continue; |
if (nn->prev && nn->prev->line < nn->line) |
print_text(h, "\n"); |
print_text(h, "\n"); |
h->flags |= HTML_NOSPACE; |
else if (NULL == nn->prev) |
|
print_text(h, "\n"); |
|
} |
} |
|
|
return(0); |
return(0); |
Line 1723 mdoc_fn_pre(MDOC_ARGS) |
|
Line 1720 mdoc_fn_pre(MDOC_ARGS) |
|
|
|
/* ARGSUSED */ |
/* ARGSUSED */ |
static int |
static int |
|
mdoc_sm_pre(MDOC_ARGS) |
|
{ |
|
|
|
assert(n->child && MDOC_TEXT == n->child->type); |
|
if (0 == strcmp("on", n->child->string)) { |
|
/* FIXME: no p->col to check... */ |
|
h->flags &= ~HTML_NOSPACE; |
|
h->flags &= ~HTML_NONOSPACE; |
|
} else |
|
h->flags |= HTML_NONOSPACE; |
|
|
|
return(0); |
|
} |
|
|
|
|
|
/* ARGSUSED */ |
|
static int |
mdoc_sp_pre(MDOC_ARGS) |
mdoc_sp_pre(MDOC_ARGS) |
{ |
{ |
int len; |
int len; |
Line 1738 mdoc_sp_pre(MDOC_ARGS) |
|
Line 1752 mdoc_sp_pre(MDOC_ARGS) |
|
len = 0; |
len = 0; |
break; |
break; |
default: |
default: |
|
assert(n->parent); |
|
if ((NULL == n->next || NULL == n->prev) && |
|
(MDOC_Ss == n->parent->tok || |
|
MDOC_Sh == n->parent->tok)) |
|
return(0); |
len = 1; |
len = 1; |
break; |
break; |
} |
} |
Line 2175 mdoc__x_pre(MDOC_ARGS) |
|
Line 2194 mdoc__x_pre(MDOC_ARGS) |
|
switch (n->tok) { |
switch (n->tok) { |
case(MDOC__A): |
case(MDOC__A): |
PAIR_CLASS_INIT(&tag[0], "ref-auth"); |
PAIR_CLASS_INIT(&tag[0], "ref-auth"); |
|
if (n->prev && MDOC__A == n->prev->tok) |
|
if (NULL == n->next || MDOC__A != n->next->tok) |
|
print_text(h, "and"); |
break; |
break; |
case(MDOC__B): |
case(MDOC__B): |
PAIR_CLASS_INIT(&tag[0], "ref-book"); |
PAIR_CLASS_INIT(&tag[0], "ref-book"); |
Line 2227 mdoc__x_pre(MDOC_ARGS) |
|
Line 2249 mdoc__x_pre(MDOC_ARGS) |
|
|
|
PAIR_HREF_INIT(&tag[1], n->child->string); |
PAIR_HREF_INIT(&tag[1], n->child->string); |
print_otag(h, TAG_A, 2, tag); |
print_otag(h, TAG_A, 2, tag); |
|
|
return(1); |
return(1); |
} |
} |
|
|
Line 2235 mdoc__x_pre(MDOC_ARGS) |
|
Line 2258 mdoc__x_pre(MDOC_ARGS) |
|
static void |
static void |
mdoc__x_post(MDOC_ARGS) |
mdoc__x_post(MDOC_ARGS) |
{ |
{ |
|
|
|
if (MDOC__A == n->tok && n->next && MDOC__A == n->next->tok) |
|
if (NULL == n->next->next || MDOC__A != n->next->next->tok) |
|
if (NULL == n->prev || MDOC__A != n->prev->tok) |
|
return; |
|
|
/* TODO: %U */ |
/* TODO: %U */ |
|
|