]> git.cameronkatri.com Git - mandoc.git/commitdiff
Update (still-commented) manual bits for tbl.
authorKristaps Dzonsons <kristaps@bsd.lv>
Wed, 29 Dec 2010 15:21:34 +0000 (15:21 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Wed, 29 Dec 2010 15:21:34 +0000 (15:21 +0000)
Also removed lots of superfluous switch cases by using tolower() and
handling only the lowercase keys.

roff.7
tbl_layout.c

diff --git a/roff.7 b/roff.7
index 04b35a5771186ddf3cffde50b67ca26d948393f5..f34f191ab068465ddbdbf14ef3eebcbbb8c122a5 100644 (file)
--- a/roff.7
+++ b/roff.7
@@ -1,4 +1,4 @@
-.\"    $Id: roff.7,v 1.18 2010/12/29 10:19:55 kristaps Exp $
+.\"    $Id: roff.7,v 1.19 2010/12/29 15:21:34 kristaps Exp $
 .\"
 .\" Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv>
 .\" Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -535,6 +535,11 @@ This request is intended to have one argument,
 consisting of an even number of characters.
 Currently, it is ignored including its arguments,
 and the number of arguments is not checked.
+.\" .Ss \&T&
+.\" Re-start a table layout, retaining the options of the prior table
+.\" invocation.
+.\" See
+.\" .Sx \&TS .
 .\" .Ss \&TE
 .\" End a table context.
 .\" See
@@ -581,6 +586,81 @@ and the number of arguments is not checked.
 .\" .Pp
 .\" in the case of
 .\" .Xr man 7 .
+.\" .Pp
+.\" The first line of a table consists of its options, which consists of
+.\" space-separated keys and modifiers terminated by a semicolon.
+.\" If the first line does not have a terminating semicolon, it is assumed
+.\" that no options are specified and instead a layout is processed.
+.\" Some options accept arguments enclosed by paranthesis.
+.\" The following case-insensitive options are available:
+.\" .Bl -tag -width Ds
+.\" .It Cm center
+.\" This may also be invoked with
+.\" .Cm centre .
+.\" .It Cm delim
+.\" Accepts a two-character argument.
+.\" This option is ignored.
+.\" .It Cm expand
+.\" .It Cm box
+.\" This may also be invoked with
+.\" .Cm frame .
+.\" .It Cm doublebox
+.\" This may also be invoked with
+.\" .Cm doubleframe .
+.\" .It Cm allbox
+.\" .It Cm tab
+.\" Accepts a single character argument used as the delimiter for cells in
+.\" data rows.
+.\" .It Cm linesize
+.\" Accepts a natural number (all digits) used as the line width for drawing
+.\" boxes.
+.\" .It Cm nokeep
+.\" .It Cm decimalpoint
+.\" .It Cm nospaces
+.\" .El
+.\" .Pp
+.\" The table layout follows table options, except in the case of
+.\" .Sx \&T& ,
+.\" where it immediately procedes invocation.
+.\" Layout specifies how data rows are displayed on output.
+.\" Each layout line corresponds to a line of data; the last layout line
+.\" applies to all remaining data lines.
+.\" Layout lines may also be separated by a comma.
+.\" Each layout cell consists of one of the following case-insensitive keys:
+.\" .Bl -tag -width Ds
+.\" .It Cm c
+.\" .It Cm r
+.\" .It Cm l
+.\" .It Cm n
+.\" .It Cm s
+.\" .It Cm a
+.\" .It Cm ^
+.\" .It Cm \-
+.\" This may also be invoked with
+.\" .Cm _ .
+.\" .It Cm =
+.\" .It Cm \(ba
+.\" .It Cm \(ba\(ba
+.\" .El
+.\" Keys may be followed by a set of modifiers.
+.\" A modifier is either a modifier key or a natural number for specifying
+.\" spacing.
+.\" The following case-insensitive modifier keys are available:
+.\" .Bl -tag -width Ds
+.\" .It Cm z
+.\" .It Cm u
+.\" .It Cm e
+.\" .It Cm t
+.\" .It Cm d
+.\" .It Cm f
+.\" Must be followed by a case-insensitive font style:
+.\" .Cm b
+.\" for bold or
+.\" .Cm i
+.\" for italic.
+.\" .It Cm b
+.\" .It Cm i
+.\" .El
 .Sh COMPATIBILITY
 This section documents compatibility between mandoc and other other
 .Nm
@@ -612,6 +692,12 @@ using the next-line syntax.
 .Xr man 7 ,
 .Xr mandoc_char 7 ,
 .Xr mdoc 7
+.\" .Rs
+.\" .%A M. E. Lesk
+.\" .%T Tbl\(emA Program to Format Tables
+.\" .%D June 11, 1976
+.\" .%U http://www.kohala.com/start/troff/v7/man/tbl/tbl.ps
+.\" .Re
 .Rs
 .%A Joseph F. Ossanna
 .%A Brian W. Kernighan
index 477a677ad7c4aef9080cca09b9c559dfa0b677b4..a2be7e4b19c5e8d77099ca6e404b602a3fa3d818 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: tbl_layout.c,v 1.1 2010/12/29 14:38:14 kristaps Exp $ */
+/*     $Id: tbl_layout.c,v 1.2 2010/12/29 15:21:34 kristaps Exp $ */
 /*
  * Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -28,21 +28,15 @@ struct      tbl_phrase {
        enum tbl_cellt   key;
 };
 
-#define        KEYS_MAX         17
+#define        KEYS_MAX         11
 
 static const struct tbl_phrase keys[KEYS_MAX] = {
        { 'c',           TBL_CELL_CENTRE },
-       { 'C',           TBL_CELL_CENTRE },
        { 'r',           TBL_CELL_RIGHT },
-       { 'R',           TBL_CELL_RIGHT },
        { 'l',           TBL_CELL_LEFT },
-       { 'L',           TBL_CELL_LEFT },
        { 'n',           TBL_CELL_NUMBER },
-       { 'N',           TBL_CELL_NUMBER },
        { 's',           TBL_CELL_SPAN },
-       { 'S',           TBL_CELL_SPAN },
        { 'a',           TBL_CELL_LONG },
-       { 'A',           TBL_CELL_LONG },
        { '^',           TBL_CELL_DOWN },
        { '-',           TBL_CELL_HORIZ },
        { '_',           TBL_CELL_HORIZ },
@@ -111,56 +105,39 @@ mod:
 
        /* TODO: GNU has many more extensions. */
 
-       switch (p[(*pos)++]) {
+       switch (tolower(p[(*pos)++])) {
        case ('z'):
-               /* FALLTHROUGH */
-       case ('Z'):
                cp->flags |= TBL_CELL_WIGN;
                goto mod;
        case ('u'):
-               /* FALLTHROUGH */
-       case ('U'):
                cp->flags |= TBL_CELL_UP;
                goto mod;
        case ('e'):
-               /* FALLTHROUGH */
-       case ('E'):
                cp->flags |= TBL_CELL_EQUAL;
                goto mod;
        case ('t'):
-               /* FALLTHROUGH */
-       case ('T'):
                cp->flags |= TBL_CELL_TALIGN;
                goto mod;
        case ('d'):
-               /* FALLTHROUGH */
-       case ('D'):
                cp->flags |= TBL_CELL_BALIGN;
                goto mod;
        case ('f'):
-               /* FALLTHROUGH */
-       case ('B'):
-               /* FALLTHROUGH */
-       case ('I'):
-               /* FALLTHROUGH */
+               break;
        case ('b'):
                /* FALLTHROUGH */
        case ('i'):
+               (*pos)--;
                break;
        default:
                TBL_MSG(tbl, MANDOCERR_TBLLAYOUT, ln, *pos - 1);
                return(0);
        }
 
-       switch (p[(*pos)++]) {
+       switch (tolower(p[(*pos)++])) {
        case ('b'):
-               /* FALLTHROUGH */
-       case ('B'):
                cp->flags |= TBL_CELL_BOLD;
                goto mod;
        case ('i'):
-               /* FALLTHROUGH */
-       case ('I'):
                cp->flags |= TBL_CELL_ITALIC;
                goto mod;
        default:
@@ -182,7 +159,7 @@ cell(struct tbl *tbl, struct tbl_row *rp,
        /* Parse the column position (`r', `R', `|', ...). */
 
        for (i = 0; i < KEYS_MAX; i++)
-               if (p[*pos] == keys[i].name)
+               if (tolower(p[*pos]) == keys[i].name)
                        break;
 
        if (KEYS_MAX == i) {