version 1.11, 2011/01/04 15:02:00 |
version 1.14, 2011/01/07 14:59:52 |
Line 45 data(struct tbl_node *tbl, struct tbl_span *dp, |
|
Line 45 data(struct tbl_node *tbl, struct tbl_span *dp, |
|
else if (NULL == dp->last) |
else if (NULL == dp->last) |
cp = dp->layout->first; |
cp = dp->layout->first; |
|
|
/* Skip over spanners to data formats. */ |
/* |
|
* Skip over spanners and vertical lines to data formats, since |
|
* we want to match data with data layout cells in the header. |
|
*/ |
|
|
while (cp && (TBL_CELL_VERT == cp->pos || |
while (cp && (TBL_CELL_VERT == cp->pos || |
TBL_CELL_DVERT == cp->pos)) |
TBL_CELL_DVERT == cp->pos || |
|
TBL_CELL_SPAN == cp->pos)) |
cp = cp->next; |
cp = cp->next; |
|
|
dat = mandoc_calloc(1, sizeof(struct tbl_dat)); |
dat = mandoc_calloc(1, sizeof(struct tbl_dat)); |
Line 108 data(struct tbl_node *tbl, struct tbl_span *dp, |
|
Line 112 data(struct tbl_node *tbl, struct tbl_span *dp, |
|
return(1); |
return(1); |
} |
} |
|
|
|
/* ARGSUSED */ |
int |
int |
tbl_cdata(struct tbl_node *tbl, int ln, const char *p) |
tbl_cdata(struct tbl_node *tbl, int ln, const char *p) |
{ |
{ |
struct tbl_dat *dat; |
struct tbl_dat *dat; |
size_t sz; |
size_t sz; |
|
int pos; |
|
|
if (0 == strcmp(p, "T}")) { |
pos = 0; |
tbl->part = TBL_PART_DATA; |
|
return(1); |
|
} |
|
|
|
dat = tbl->last_span->last; |
dat = tbl->last_span->last; |
dat->pos = TBL_DATA_DATA; |
dat->pos = TBL_DATA_DATA; |
|
|
|
if (p[pos] == 'T' && p[pos + 1] == '}') { |
|
pos += 2; |
|
if (p[pos] == tbl->opts.tab) { |
|
tbl->part = TBL_PART_DATA; |
|
pos++; |
|
return(data(tbl, tbl->last_span, ln, p, &pos)); |
|
} else if ('\0' == p[pos]) { |
|
tbl->part = TBL_PART_DATA; |
|
return(1); |
|
} |
|
|
|
/* Fallthrough: T} is part of a word. */ |
|
} |
|
|
if (dat->string) { |
if (dat->string) { |
sz = strlen(p) + strlen(dat->string) + 2; |
sz = strlen(p) + strlen(dat->string) + 2; |