aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--main.c4
-rw-r--r--mandoc.h3
-rw-r--r--roff.773
-rw-r--r--tbl_data.c7
-rw-r--r--tbl_term.c39
5 files changed, 71 insertions, 55 deletions
diff --git a/main.c b/main.c
index 2289de8a..63b778f4 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.133 2011/01/03 23:53:51 schwarze Exp $ */
+/* $Id: main.c,v 1.134 2011/01/04 12:06:21 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -189,6 +189,8 @@ static const char * const mandocerrs[MANDOCERR_MAX] = {
"bad table layout",
"no table layout cells specified",
"no table data cells specified",
+ "ignore data in cell",
+
"input stack limit exceeded, infinite loop?",
"skipping bad character",
"skipping text before the first section header",
diff --git a/mandoc.h b/mandoc.h
index 0f28aafc..75d8f1d3 100644
--- a/mandoc.h
+++ b/mandoc.h
@@ -1,4 +1,4 @@
-/* $Id: mandoc.h,v 1.46 2011/01/03 23:53:51 schwarze Exp $ */
+/* $Id: mandoc.h,v 1.47 2011/01/04 12:06:21 kristaps Exp $ */
/*
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -111,6 +111,7 @@ enum mandocerr {
MANDOCERR_TBLLAYOUT, /* bad table layout */
MANDOCERR_TBLNOLAYOUT, /* no table layout cells specified */
MANDOCERR_TBLNODATA, /* no table data cells specified */
+ MANDOCERR_TBLIGNDATA, /* ignore data in cell */
MANDOCERR_ROFFLOOP, /* input stack limit exceeded, infinite loop? */
MANDOCERR_BADCHAR, /* skipping bad character */
diff --git a/roff.7 b/roff.7
index 06a94cc3..cdf20a27 100644
--- a/roff.7
+++ b/roff.7
@@ -1,4 +1,4 @@
-.\" $Id: roff.7,v 1.20 2011/01/03 16:04:41 kristaps Exp $
+.\" $Id: roff.7,v 1.21 2011/01/04 12:06:21 kristaps Exp $
.\"
.\" Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv>
.\" Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -15,7 +15,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: January 3 2011 $
+.Dd $Mdocdate: January 4 2011 $
.Dt ROFF 7
.Os
.Sh NAME
@@ -681,34 +681,61 @@ This option is not supported by
This option is not supported by
.Xr mandoc 1 .
.It Cm \-
+Replace the data cell (its contents will be lost) with a single
+horizontal line.
This may also be invoked with
.Cm _ .
.It Cm =
+Replace the data cell (its contents will be lost) with a double
+horizontal line.
.It Cm \(ba
Emit a vertical bar instead of data.
.It Cm \(ba\(ba
Emit a double-vertical bar instead of data.
.El
.Pp
+For example, following layout specifies a centre-justified column of
+minimum width 10, followed by vertical bar, followed by a left-justified
+column of minimum width 10, another vertical bar, then a column
+justified about the decimal point in numbers:
+.Pp
+.Dl c10 | l10 | n
+.Pp
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
+.Cm z ,
+.Cm u ,
+.Cm e ,
+.Cm t ,
+.Cm d ,
+.Cm f ,
+.Cm b ,
+.Cm i ,
+.Cm b ,
+and
+.Cm i .
+All of these are ignored by
+.Xr mandoc 1 .
+.Pp
+The data section follows the last layout row.
+By default, cells in a data section are delimited by a tab.
+This behaviour may be changed with the
+.Cm tab
+option.
+If
+.Cm _
+or
+.Cm =
+is specified, a single or double line, respectively, is drawn across the
+data field.
+If
+.Cm \e-
+or
+.Cm \e=
+is specified, a line is drawn within the data field (i.e., terminating
+within the cell and not draw to the border).
.Sh COMPATIBILITY
This section documents compatibility between mandoc and other other
.Nm
@@ -740,12 +767,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 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
diff --git a/tbl_data.c b/tbl_data.c
index 65659e24..40264b9c 100644
--- a/tbl_data.c
+++ b/tbl_data.c
@@ -1,4 +1,4 @@
-/* $Id: tbl_data.c,v 1.9 2011/01/02 12:04:23 kristaps Exp $ */
+/* $Id: tbl_data.c,v 1.10 2011/01/04 12:06:21 kristaps Exp $ */
/*
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -82,6 +82,11 @@ data(struct tbl_node *tbl, struct tbl_span *dp,
dat->pos = TBL_DATA_NDHORIZ;
else
dat->pos = TBL_DATA_DATA;
+
+ if (TBL_CELL_HORIZ == dat->layout->pos ||
+ TBL_CELL_DHORIZ == dat->layout->pos)
+ if (TBL_DATA_DATA == dat->pos && '\0' != *dat->string)
+ TBL_MSG(tbl, MANDOCERR_TBLIGNDATA, ln, sv);
}
int
diff --git a/tbl_term.c b/tbl_term.c
index 74f00ad9..97c9d392 100644
--- a/tbl_term.c
+++ b/tbl_term.c
@@ -1,4 +1,4 @@
-/* $Id: tbl_term.c,v 1.6 2011/01/03 16:04:41 kristaps Exp $ */
+/* $Id: tbl_term.c,v 1.7 2011/01/04 12:06:21 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -40,9 +40,6 @@ static void tbl_data_number(struct termp *,
static void tbl_data_literal(struct termp *,
const struct tbl_dat *,
const struct termp_tbl *);
-static void tbl_data_spanner(struct termp *,
- const struct tbl_dat *,
- const struct termp_tbl *);
static void tbl_data(struct termp *, const struct tbl *,
const struct tbl_dat *,
const struct termp_tbl *);
@@ -261,8 +258,13 @@ tbl_data(struct termp *tp, const struct tbl *tbl,
switch (dp->pos) {
case (TBL_DATA_HORIZ):
/* FALLTHROUGH */
+ case (TBL_DATA_NHORIZ):
+ tbl_char(tp, '-', tbp->width);
+ return;
+ case (TBL_DATA_NDHORIZ):
+ /* FALLTHROUGH */
case (TBL_DATA_DHORIZ):
- tbl_data_spanner(tp, dp, tbp);
+ tbl_char(tp, '=', tbp->width);
return;
default:
break;
@@ -272,10 +274,10 @@ tbl_data(struct termp *tp, const struct tbl *tbl,
switch (pos) {
case (TBL_CELL_HORIZ):
- /* FALLTHROUGH */
+ tbl_char(tp, '-', tbp->width);
+ break;
case (TBL_CELL_DHORIZ):
- /* FIXME: THIS IS WRONG. */
- tbl_data_spanner(tp, dp, tbp);
+ tbl_char(tp, '=', tbp->width);
break;
case (TBL_CELL_LONG):
/* FALLTHROUGH */
@@ -319,7 +321,6 @@ tbl_vframe(struct termp *tp, const struct tbl *tbl)
term_word(tp, "|");
}
-
static inline void
tbl_char(struct termp *tp, char c, int len)
{
@@ -336,26 +337,6 @@ tbl_char(struct termp *tp, char c, int len)
}
static void
-tbl_data_spanner(struct termp *tp,
- const struct tbl_dat *dp,
- const struct termp_tbl *tblp)
-{
-
- switch (dp->pos) {
- case (TBL_DATA_HORIZ):
- case (TBL_DATA_NHORIZ):
- tbl_char(tp, '-', tblp->width);
- break;
- case (TBL_DATA_DHORIZ):
- case (TBL_DATA_NDHORIZ):
- tbl_char(tp, '=', tblp->width);
- break;
- default:
- break;
- }
-}
-
-static void
tbl_data_literal(struct termp *tp,
const struct tbl_dat *dp,
const struct termp_tbl *tblp)