version 1.27, 2009/07/18 17:11:44 |
version 1.28, 2009/07/18 17:26:21 |
|
|
|
|
struct termpair { |
struct termpair { |
struct termpair *ppair; |
struct termpair *ppair; |
int flag; |
int flag; |
size_t offset; /* Left margin. */ |
|
size_t rmargin; /* Right margin. */ |
|
int count; |
int count; |
}; |
}; |
|
|
|
|
{ |
{ |
int dochild; |
int dochild; |
struct termpair npair; |
struct termpair npair; |
|
size_t offset, rmargin; |
|
|
/* Pre-processing. */ |
|
|
|
dochild = 1; |
dochild = 1; |
|
offset = p->offset; |
|
rmargin = p->rmargin; |
|
|
npair.ppair = pair; |
npair.ppair = pair; |
npair.offset = npair.rmargin = 0; |
|
npair.flag = 0; |
npair.flag = 0; |
npair.count = 0; |
npair.count = 0; |
|
|
|
|
if (MDOC_TEXT != node->type) |
if (MDOC_TEXT != node->type) |
if (termacts[node->tok].post) |
if (termacts[node->tok].post) |
(*termacts[node->tok].post)(p, &npair, meta, node); |
(*termacts[node->tok].post)(p, &npair, meta, node); |
|
|
|
p->offset = offset; |
|
p->rmargin = rmargin; |
} |
} |
|
|
|
|
|
|
{ |
{ |
const struct mdoc_node *bl, *n; |
const struct mdoc_node *bl, *n; |
char buf[7]; |
char buf[7]; |
int i, type, keys[3], vals[3], sv; |
int i, type, keys[3], vals[3]; |
size_t width, offset; |
size_t width, offset; |
|
|
if (MDOC_BLOCK == node->type) |
if (MDOC_BLOCK == node->type) |
|
|
|
|
/* Save parent attributes. */ |
/* Save parent attributes. */ |
|
|
pair->offset = p->offset; |
|
pair->rmargin = p->rmargin; |
|
pair->flag = p->flags; |
pair->flag = p->flags; |
|
|
/* Get list width and offset. */ |
/* Get list width and offset. */ |
|
|
* HEAD character (temporarily bold, in some cases). |
* HEAD character (temporarily bold, in some cases). |
*/ |
*/ |
|
|
sv = p->flags; |
|
if (MDOC_HEAD == node->type) |
if (MDOC_HEAD == node->type) |
switch (type) { |
switch (type) { |
case (MDOC_Bullet): |
case (MDOC_Bullet): |
|
|
break; |
break; |
} |
} |
|
|
p->flags = sv; /* Restore saved flags. */ |
|
|
|
/* |
/* |
* If we're not going to process our children, indicate so here. |
* If we're not going to process our children, indicate so here. |
*/ |
*/ |
|
|
break; |
break; |
} |
} |
|
|
p->offset = pair->offset; |
|
p->rmargin = pair->rmargin; |
|
p->flags = pair->flag; |
p->flags = pair->flag; |
} |
} |
|
|
|
|
if (MDOC_BLOCK != node->type) |
if (MDOC_BLOCK != node->type) |
return(1); |
return(1); |
term_newln(p); |
term_newln(p); |
pair->offset = INDENT + 1; |
p->offset += (INDENT + 1); |
p->offset += pair->offset; |
|
return(1); |
return(1); |
} |
} |
|
|
|
|
if (MDOC_BLOCK != node->type) |
if (MDOC_BLOCK != node->type) |
return; |
return; |
term_newln(p); |
term_newln(p); |
p->offset -= pair->offset; |
|
} |
} |
|
|
|
|
|
|
if (NULL == node->parent->args) |
if (NULL == node->parent->args) |
errx(1, "missing display type"); |
errx(1, "missing display type"); |
|
|
pair->offset = p->offset; |
|
|
|
for (type = -1, i = 0; |
for (type = -1, i = 0; |
i < (int)node->parent->args->argc; i++) { |
i < (int)node->parent->args->argc; i++) { |
switch (node->parent->args->argv[i].arg) { |
switch (node->parent->args->argv[i].arg) { |
|
|
|
|
term_flushln(p); |
term_flushln(p); |
p->flags &= ~TERMP_LITERAL; |
p->flags &= ~TERMP_LITERAL; |
p->offset = pair->offset; |
|
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
} |
} |
|
|