version 1.227, 2015/04/02 21:36:50 |
version 1.235, 2015/09/26 00:32:35 |
|
|
|
|
#define INDENT 5 |
#define INDENT 5 |
|
|
#define MDOC_ARGS const struct mdoc_meta *meta, \ |
#define MDOC_ARGS const struct roff_meta *meta, \ |
struct mdoc_node *n, \ |
struct roff_node *n, \ |
struct html *h |
struct html *h |
|
|
#ifndef MIN |
#ifndef MIN |
Line 48 struct htmlmdoc { |
|
Line 48 struct htmlmdoc { |
|
void (*post)(MDOC_ARGS); |
void (*post)(MDOC_ARGS); |
}; |
}; |
|
|
static void print_mdoc(MDOC_ARGS); |
|
static void print_mdoc_head(MDOC_ARGS); |
static void print_mdoc_head(MDOC_ARGS); |
static void print_mdoc_node(MDOC_ARGS); |
static void print_mdoc_node(MDOC_ARGS); |
static void print_mdoc_nodelist(MDOC_ARGS); |
static void print_mdoc_nodelist(MDOC_ARGS); |
static void synopsis_pre(struct html *, |
static void synopsis_pre(struct html *, |
const struct mdoc_node *); |
const struct roff_node *); |
|
|
static void a2width(const char *, struct roffsu *); |
static void a2width(const char *, struct roffsu *); |
|
|
Line 264 static const char * const lists[LIST_MAX] = { |
|
Line 263 static const char * const lists[LIST_MAX] = { |
|
}; |
}; |
|
|
|
|
void |
|
html_mdoc(void *arg, const struct mdoc *mdoc) |
|
{ |
|
|
|
print_mdoc(mdoc_meta(mdoc), mdoc_node(mdoc)->child, |
|
(struct html *)arg); |
|
putchar('\n'); |
|
} |
|
|
|
/* |
/* |
* Calculate the scaling unit passed in a `-width' argument. This uses |
* Calculate the scaling unit passed in a `-width' argument. This uses |
* either a native scaling unit (e.g., 1i, 2m) or the string length of |
* either a native scaling unit (e.g., 1i, 2m) or the string length of |
Line 293 a2width(const char *p, struct roffsu *su) |
|
Line 283 a2width(const char *p, struct roffsu *su) |
|
* See the same function in mdoc_term.c for documentation. |
* See the same function in mdoc_term.c for documentation. |
*/ |
*/ |
static void |
static void |
synopsis_pre(struct html *h, const struct mdoc_node *n) |
synopsis_pre(struct html *h, const struct roff_node *n) |
{ |
{ |
|
|
if (NULL == n->prev || ! (MDOC_SYNPRETTY & n->flags)) |
if (NULL == n->prev || ! (MDOC_SYNPRETTY & n->flags)) |
Line 331 synopsis_pre(struct html *h, const struct mdoc_node *n |
|
Line 321 synopsis_pre(struct html *h, const struct mdoc_node *n |
|
} |
} |
} |
} |
|
|
static void |
void |
print_mdoc(MDOC_ARGS) |
html_mdoc(void *arg, const struct roff_man *mdoc) |
{ |
{ |
struct tag *t, *tt; |
|
struct htmlpair tag; |
struct htmlpair tag; |
|
struct html *h; |
|
struct tag *t, *tt; |
|
|
PAIR_CLASS_INIT(&tag, "mandoc"); |
PAIR_CLASS_INIT(&tag, "mandoc"); |
|
h = (struct html *)arg; |
|
|
if ( ! (HTML_FRAGMENT & h->oflags)) { |
if ( ! (HTML_FRAGMENT & h->oflags)) { |
print_gen_decls(h); |
print_gen_decls(h); |
t = print_otag(h, TAG_HTML, 0, NULL); |
t = print_otag(h, TAG_HTML, 0, NULL); |
tt = print_otag(h, TAG_HEAD, 0, NULL); |
tt = print_otag(h, TAG_HEAD, 0, NULL); |
print_mdoc_head(meta, n, h); |
print_mdoc_head(&mdoc->meta, mdoc->first->child, h); |
print_tagq(h, tt); |
print_tagq(h, tt); |
print_otag(h, TAG_BODY, 0, NULL); |
print_otag(h, TAG_BODY, 0, NULL); |
print_otag(h, TAG_DIV, 1, &tag); |
print_otag(h, TAG_DIV, 1, &tag); |
} else |
} else |
t = print_otag(h, TAG_DIV, 1, &tag); |
t = print_otag(h, TAG_DIV, 1, &tag); |
|
|
print_mdoc_nodelist(meta, n, h); |
mdoc_root_pre(&mdoc->meta, mdoc->first->child, h); |
|
print_mdoc_nodelist(&mdoc->meta, mdoc->first->child, h); |
|
mdoc_root_post(&mdoc->meta, mdoc->first->child, h); |
print_tagq(h, t); |
print_tagq(h, t); |
|
putchar('\n'); |
} |
} |
|
|
static void |
static void |
Line 391 print_mdoc_node(MDOC_ARGS) |
|
Line 386 print_mdoc_node(MDOC_ARGS) |
|
n->flags &= ~MDOC_ENDED; |
n->flags &= ~MDOC_ENDED; |
|
|
switch (n->type) { |
switch (n->type) { |
case ROFFT_ROOT: |
|
child = mdoc_root_pre(meta, n, h); |
|
break; |
|
case ROFFT_TEXT: |
case ROFFT_TEXT: |
/* No tables in this mode... */ |
/* No tables in this mode... */ |
assert(NULL == h->tblt); |
assert(NULL == h->tblt); |
Line 451 print_mdoc_node(MDOC_ARGS) |
|
Line 443 print_mdoc_node(MDOC_ARGS) |
|
print_stagq(h, t); |
print_stagq(h, t); |
|
|
switch (n->type) { |
switch (n->type) { |
case ROFFT_ROOT: |
|
mdoc_root_post(meta, n, h); |
|
break; |
|
case ROFFT_EQN: |
case ROFFT_EQN: |
break; |
break; |
default: |
default: |
Line 652 mdoc_nm_pre(MDOC_ARGS) |
|
Line 641 mdoc_nm_pre(MDOC_ARGS) |
|
int len; |
int len; |
|
|
switch (n->type) { |
switch (n->type) { |
|
case ROFFT_HEAD: |
|
print_otag(h, TAG_TD, 0, NULL); |
|
/* FALLTHROUGH */ |
case ROFFT_ELEM: |
case ROFFT_ELEM: |
synopsis_pre(h, n); |
|
PAIR_CLASS_INIT(&tag, "name"); |
PAIR_CLASS_INIT(&tag, "name"); |
print_otag(h, TAG_B, 1, &tag); |
print_otag(h, TAG_B, 1, &tag); |
if (NULL == n->child && meta->name) |
if (n->child == NULL && meta->name != NULL) |
print_text(h, meta->name); |
print_text(h, meta->name); |
return(1); |
return(1); |
case ROFFT_HEAD: |
|
print_otag(h, TAG_TD, 0, NULL); |
|
if (NULL == n->child && meta->name) |
|
print_text(h, meta->name); |
|
return(1); |
|
case ROFFT_BODY: |
case ROFFT_BODY: |
print_otag(h, TAG_TD, 0, NULL); |
print_otag(h, TAG_TD, 0, NULL); |
return(1); |
return(1); |
Line 675 mdoc_nm_pre(MDOC_ARGS) |
|
Line 661 mdoc_nm_pre(MDOC_ARGS) |
|
PAIR_CLASS_INIT(&tag, "synopsis"); |
PAIR_CLASS_INIT(&tag, "synopsis"); |
print_otag(h, TAG_TABLE, 1, &tag); |
print_otag(h, TAG_TABLE, 1, &tag); |
|
|
for (len = 0, n = n->child; n; n = n->next) |
for (len = 0, n = n->head->child; n; n = n->next) |
if (n->type == ROFFT_TEXT) |
if (n->type == ROFFT_TEXT) |
len += html_strlen(n->string); |
len += html_strlen(n->string); |
|
|
if (0 == len && meta->name) |
if (len == 0 && meta->name != NULL) |
len = html_strlen(meta->name); |
len = html_strlen(meta->name); |
|
|
SCALE_HS_INIT(&su, len); |
SCALE_HS_INIT(&su, len); |
Line 822 mdoc_it_pre(MDOC_ARGS) |
|
Line 808 mdoc_it_pre(MDOC_ARGS) |
|
struct roffsu su; |
struct roffsu su; |
enum mdoc_list type; |
enum mdoc_list type; |
struct htmlpair tag[2]; |
struct htmlpair tag[2]; |
const struct mdoc_node *bl; |
const struct roff_node *bl; |
|
|
bl = n->parent; |
bl = n->parent; |
while (bl && MDOC_Bl != bl->tok) |
while (bl && MDOC_Bl != bl->tok) |
Line 1126 mdoc_bd_pre(MDOC_ARGS) |
|
Line 1112 mdoc_bd_pre(MDOC_ARGS) |
|
{ |
{ |
struct htmlpair tag[2]; |
struct htmlpair tag[2]; |
int comp, sv; |
int comp, sv; |
struct mdoc_node *nn; |
struct roff_node *nn; |
struct roffsu su; |
struct roffsu su; |
|
|
if (n->type == ROFFT_HEAD) |
if (n->type == ROFFT_HEAD) |
Line 1312 mdoc_er_pre(MDOC_ARGS) |
|
Line 1298 mdoc_er_pre(MDOC_ARGS) |
|
static int |
static int |
mdoc_fa_pre(MDOC_ARGS) |
mdoc_fa_pre(MDOC_ARGS) |
{ |
{ |
const struct mdoc_node *nn; |
const struct roff_node *nn; |
struct htmlpair tag; |
struct htmlpair tag; |
struct tag *t; |
struct tag *t; |
|
|
Line 1653 mdoc_fo_pre(MDOC_ARGS) |
|
Line 1639 mdoc_fo_pre(MDOC_ARGS) |
|
return(1); |
return(1); |
} |
} |
|
|
/* XXX: we drop non-initial arguments as per groff. */ |
if (n->child == NULL) |
|
return(0); |
|
|
assert(n->child); |
|
assert(n->child->string); |
assert(n->child->string); |
|
|
PAIR_CLASS_INIT(&tag, "fname"); |
PAIR_CLASS_INIT(&tag, "fname"); |
t = print_otag(h, TAG_B, 1, &tag); |
t = print_otag(h, TAG_B, 1, &tag); |
print_text(h, n->child->string); |
print_text(h, n->child->string); |