version 1.84, 2015/02/01 23:10:35 |
version 1.88, 2015/02/17 20:37:17 |
|
|
#include "mdoc.h" |
#include "mdoc.h" |
#include "main.h" |
#include "main.h" |
|
|
#define DECL_ARGS const struct mdoc_meta *meta, \ |
#define DECL_ARGS const struct mdoc_meta *meta, struct mdoc_node *n |
const struct mdoc_node *n |
|
|
|
struct manact { |
struct manact { |
int (*cond)(DECL_ARGS); /* DON'T run actions */ |
int (*cond)(DECL_ARGS); /* DON'T run actions */ |
Line 186 static const struct manact manacts[MDOC_MAX + 1] = { |
|
Line 185 static const struct manact manacts[MDOC_MAX + 1] = { |
|
{ NULL, pre_bx, NULL, NULL, NULL }, /* Bx */ |
{ NULL, pre_bx, NULL, NULL, NULL }, /* Bx */ |
{ NULL, pre_skip, NULL, NULL, NULL }, /* Db */ |
{ NULL, pre_skip, NULL, NULL, NULL }, /* Db */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Dc */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Dc */ |
{ cond_body, pre_enc, post_enc, "\\(lq", "\\(rq" }, /* Do */ |
{ cond_body, pre_enc, post_enc, "\\(Lq", "\\(Rq" }, /* Do */ |
{ cond_body, pre_enc, post_enc, "\\(lq", "\\(rq" }, /* Dq */ |
{ cond_body, pre_enc, post_enc, "\\(Lq", "\\(Rq" }, /* Dq */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Ec */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Ec */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Ef */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Ef */ |
{ NULL, pre_em, post_font, NULL, NULL }, /* Em */ |
{ NULL, pre_em, post_font, NULL, NULL }, /* Em */ |
|
|
man_mdoc(void *arg, const struct mdoc *mdoc) |
man_mdoc(void *arg, const struct mdoc *mdoc) |
{ |
{ |
const struct mdoc_meta *meta; |
const struct mdoc_meta *meta; |
const struct mdoc_node *n; |
struct mdoc_node *n; |
|
|
meta = mdoc_meta(mdoc); |
meta = mdoc_meta(mdoc); |
n = mdoc_node(mdoc); |
n = mdoc_node(mdoc)->child; |
|
|
printf(".TH \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", |
printf(".TH \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", |
meta->title, |
meta->title, |
Line 567 man_mdoc(void *arg, const struct mdoc *mdoc) |
|
Line 566 man_mdoc(void *arg, const struct mdoc *mdoc) |
|
fontqueue.head = fontqueue.tail = mandoc_malloc(8); |
fontqueue.head = fontqueue.tail = mandoc_malloc(8); |
*fontqueue.tail = 'R'; |
*fontqueue.tail = 'R'; |
} |
} |
print_node(meta, n); |
while (n != NULL) { |
|
print_node(meta, n); |
|
n = n->next; |
|
} |
putchar('\n'); |
putchar('\n'); |
} |
} |
|
|
static void |
static void |
print_node(DECL_ARGS) |
print_node(DECL_ARGS) |
{ |
{ |
const struct mdoc_node *sub; |
|
const struct manact *act; |
const struct manact *act; |
|
struct mdoc_node *sub; |
int cond, do_sub; |
int cond, do_sub; |
|
|
/* |
/* |
Line 588 print_node(DECL_ARGS) |
|
Line 590 print_node(DECL_ARGS) |
|
act = NULL; |
act = NULL; |
cond = 0; |
cond = 0; |
do_sub = 1; |
do_sub = 1; |
|
n->flags &= ~MDOC_ENDED; |
|
|
if (MDOC_TEXT == n->type) { |
if (MDOC_TEXT == n->type) { |
/* |
/* |
Line 635 print_node(DECL_ARGS) |
|
Line 638 print_node(DECL_ARGS) |
|
(*act->post)(meta, n); |
(*act->post)(meta, n); |
|
|
if (ENDBODY_NOT != n->end) |
if (ENDBODY_NOT != n->end) |
n->pending->flags |= MDOC_ENDED; |
n->body->flags |= MDOC_ENDED; |
|
|
if (ENDBODY_NOSPACE == n->end) |
if (ENDBODY_NOSPACE == n->end) |
outflags &= ~(MMAN_spc | MMAN_nl); |
outflags &= ~(MMAN_spc | MMAN_nl); |
Line 1140 pre_eo(DECL_ARGS) |
|
Line 1143 pre_eo(DECL_ARGS) |
|
n->child->end != ENDBODY_NOT) |
n->child->end != ENDBODY_NOT) |
print_word("\\&"); |
print_word("\\&"); |
else if (n->end != ENDBODY_NOT ? n->child != NULL : |
else if (n->end != ENDBODY_NOT ? n->child != NULL : |
n->parent->head->child != NULL && |
n->parent->head->child != NULL && (n->child != NULL || |
(n->parent->body->child != NULL || |
(n->parent->tail != NULL && n->parent->tail->child != NULL))) |
n->parent->tail->child != NULL)) |
|
outflags &= ~(MMAN_spc | MMAN_nl); |
outflags &= ~(MMAN_spc | MMAN_nl); |
return(1); |
return(1); |
} |
} |
Line 1284 pre_fo(DECL_ARGS) |
|
Line 1286 pre_fo(DECL_ARGS) |
|
pre_syn(n); |
pre_syn(n); |
break; |
break; |
case MDOC_HEAD: |
case MDOC_HEAD: |
|
if (n->child == NULL) |
|
return(0); |
if (MDOC_SYNPRETTY & n->flags) |
if (MDOC_SYNPRETTY & n->flags) |
print_block(".HP 4n", MMAN_nl); |
print_block(".HP 4n", MMAN_nl); |
font_push('B'); |
font_push('B'); |
break; |
break; |
case MDOC_BODY: |
case MDOC_BODY: |
outflags &= ~MMAN_spc; |
outflags &= ~(MMAN_spc | MMAN_nl); |
print_word("("); |
print_word("("); |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
break; |
break; |
Line 1305 post_fo(DECL_ARGS) |
|
Line 1309 post_fo(DECL_ARGS) |
|
|
|
switch (n->type) { |
switch (n->type) { |
case MDOC_HEAD: |
case MDOC_HEAD: |
font_pop(); |
if (n->child != NULL) |
|
font_pop(); |
break; |
break; |
case MDOC_BODY: |
case MDOC_BODY: |
post_fn(meta, n); |
post_fn(meta, n); |