-/* $Id: term.c,v 1.39 2009/03/04 13:57:35 kristaps Exp $ */
+/* $Id: term.c,v 1.43 2009/03/06 14:13:47 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
DECL_POST(termp___);
DECL_POST(termp_bl);
DECL_POST(termp_bx);
+DECL_POST(termp_lb);
const struct termact __termacts[MDOC_MAX] = {
{ NULL, NULL }, /* \" */
{ NULL, NULL }, /* Hf */
{ NULL, NULL }, /* Fr */
{ termp_ud_pre, NULL }, /* Ud */
+ { NULL, termp_lb_post }, /* lb */
};
const struct termact *termacts = __termacts;
assert(len > 0);
for (i = 0; i < len - 1; i++)
- if ( ! isdigit((int)(*arg->value)[i]))
+ if ( ! isdigit((u_char)(*arg->value)[i]))
break;
if (i == len - 1) {
p->flags |= TERMP_NOBREAK;
else
p->flags |= TERMP_NOLPAD;
+ if (MDOC_HEAD == node->type && MDOC_Tag == type)
+ if (NULL == node->next ||
+ NULL == node->next->child)
+ p->flags |= TERMP_NONOBREAK;
break;
case (MDOC_Diag):
if (MDOC_HEAD == node->type)
{
TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_CMD_ARG]);
- if (NULL == node->child) {
- word(p, "file");
- word(p, "...");
- }
return(1);
}
static int
termp_st_pre(DECL_ARGS)
{
- const char *tp;
-
- assert(1 == node->data.elem.argc);
-
- tp = mdoc_st2a(node->data.elem.argv[0].arg);
- word(p, tp);
+ const char *cp;
- return(1);
+ /* XXX - if child isn't text? */
+ if (node->child)
+ if ((cp = mdoc_a2st(node->child->data.text.string)))
+ word(p, cp);
+ return(0);
}
}
+/* ARGSUSED */
+static void
+termp_lb_post(DECL_ARGS)
+{
+
+ newln(p);
+}
+
+
/* ARGSUSED */
static int
termp_ud_pre(DECL_ARGS)
if (MDOC_BODY != node->type)
return(1);
- word(p, "<");
+ word(p, "\\(la");
p->flags |= TERMP_NOSPACE;
return(1);
}
if (MDOC_BODY != node->type)
return;
p->flags |= TERMP_NOSPACE;
- word(p, ">");
+ word(p, "\\(ra");
}
static int
termp_at_pre(DECL_ARGS)
{
- enum mdoc_att c;
+ const char *att;
+
+ att = NULL;
- c = ATT_DEFAULT;
if (node->child) {
assert(MDOC_TEXT == node->child->type);
- c = mdoc_atoatt(node->child->data.text.string);
+ att = mdoc_a2att(node->child->data.text.string);
}
- word(p, mdoc_att2a(c));
+ if (NULL == att)
+ att = "AT&T UNIX";
+
+ word(p, att);
return(0);
}
termp__t_pre(DECL_ARGS)
{
+ /* FIXME: titles are underlined. */
word(p, "\"");
p->flags |= TERMP_NOSPACE;
return(1);
{
p->flags |= TERMP_NOSPACE;
+ /* FIXME: titles are underlined. */
word(p, "\"");
word(p, node->next ? "," : ".");
}