-/* $Id: mdoc_action.c,v 1.83 2010/11/29 14:56:43 kristaps Exp $ */
+/* $Id: mdoc_action.c,v 1.85 2010/11/29 16:06:46 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
static int post_bl_tagwidth(POST_ARGS);
static int post_bl_width(POST_ARGS);
static int post_dd(POST_ARGS);
-static int post_display(POST_ARGS);
static int post_dt(POST_ARGS);
-static int post_nm(POST_ARGS);
static int post_os(POST_ARGS);
-static int post_pa(POST_ARGS);
static int post_prol(POST_ARGS);
-static int post_st(POST_ARGS);
static int post_std(POST_ARGS);
-static int pre_bd(PRE_ARGS);
-static int pre_dl(PRE_ARGS);
-
static const struct actions mdoc_actions[MDOC_MAX] = {
{ NULL, NULL }, /* Ap */
{ NULL, post_dd }, /* Dd */
{ NULL, NULL }, /* Ss */
{ NULL, NULL }, /* Pp */
{ NULL, NULL }, /* D1 */
- { pre_dl, post_display }, /* Dl */
- { pre_bd, post_display }, /* Bd */
+ { NULL, NULL }, /* Dl */
+ { NULL, NULL }, /* Bd */
{ NULL, NULL }, /* Ed */
{ NULL, post_bl }, /* Bl */
{ NULL, NULL }, /* El */
{ NULL, NULL }, /* In */
{ NULL, NULL }, /* Li */
{ NULL, NULL }, /* Nd */
- { NULL, post_nm }, /* Nm */
+ { NULL, NULL }, /* Nm */
{ NULL, NULL }, /* Op */
{ NULL, NULL }, /* Ot */
- { NULL, post_pa }, /* Pa */
+ { NULL, NULL }, /* Pa */
{ NULL, post_std }, /* Rv */
- { NULL, post_st }, /* St */
+ { NULL, NULL }, /* St */
{ NULL, NULL }, /* Va */
{ NULL, NULL }, /* Vt */
{ NULL, NULL }, /* Xr */
{ NULL, NULL }, /* Ta */
};
-#define RSORD_MAX 14
-
-static const enum mdoct rsord[RSORD_MAX] = {
- MDOC__A,
- MDOC__T,
- MDOC__B,
- MDOC__I,
- MDOC__J,
- MDOC__R,
- MDOC__N,
- MDOC__V,
- MDOC__P,
- MDOC__Q,
- MDOC__D,
- MDOC__O,
- MDOC__C,
- MDOC__U
-};
-
int
mdoc_action_pre(struct mdoc *m, struct mdoc_node *n)
return(1);
}
-
-/*
- * The `Nm' macro's first use sets the name of the document. See also
- * post_std(), etc.
- */
-static int
-post_nm(POST_ARGS)
-{
- char buf[BUFSIZ];
-
- if (m->meta.name)
- return(1);
- if ( ! concat(m, buf, n->child, BUFSIZ))
- return(0);
- m->meta.name = mandoc_strdup(buf);
- return(1);
-}
-
-/*
- * Substitute the value of `St' for the corresponding formatted string.
- * We're guaranteed that this exists (it's been verified during the
- * validation phase).
- */
-/* ARGSUSED */
-static int
-post_st(POST_ARGS)
-{
- const char *p;
-
- assert(MDOC_TEXT == n->child->type);
- p = mdoc_a2st(n->child->string);
- if (p != NULL) {
- free(n->child->string);
- n->child->string = mandoc_strdup(p);
- }
- return(1);
-}
-
-
/*
* Parse out the contents of `Dt'. See in-line documentation for how we
* handle the various fields of this macro.
return(1);
}
-
-/*
- * The `Pa' macro defaults to a tilde if no value is provided as an
- * argument.
- */
-static int
-post_pa(POST_ARGS)
-{
- struct mdoc_node *np;
-
- if (n->child)
- return(1);
-
- np = n;
- m->next = MDOC_NEXT_CHILD;
- if ( ! mdoc_word_alloc(m, n->line, n->pos, "~"))
- return(0);
- m->last = np;
- return(1);
-}
-
-
/*
* Parse the date field in `Dd'.
*/
m->flags |= MDOC_PBODY;
return(1);
}
-
-
-/*
- * Trigger a literal context.
- */
-static int
-pre_dl(PRE_ARGS)
-{
-
- if (MDOC_BODY == n->type)
- m->flags |= MDOC_LITERAL;
- return(1);
-}
-
-
-static int
-pre_bd(PRE_ARGS)
-{
-
- if (MDOC_BODY != n->type)
- return(1);
-
- assert(n->data.Bd);
- if (DISP_literal == n->data.Bd->type)
- m->flags |= MDOC_LITERAL;
- if (DISP_unfilled == n->data.Bd->type)
- m->flags |= MDOC_LITERAL;
-
- return(1);
-}
-
-
-static int
-post_display(POST_ARGS)
-{
-
- if (MDOC_BODY == n->type)
- m->flags &= ~MDOC_LITERAL;
- return(1);
-}