209 lines
3.7 KiB
Text
209 lines
3.7 KiB
Text
// This is a slightly modified (replaced example table by example,
|
|
// different rendering of code inside table) copy of the
|
|
// table section from GFM's spec.txt
|
|
|
|
## Tables (extension)
|
|
|
|
GFM enables the `table` extension, where an additional leaf block type is
|
|
available.
|
|
|
|
A [table](@) is an arrangement of data with rows and columns, consisting of a
|
|
single header row, a [delimiter row] separating the header from the data, and
|
|
zero or more data rows.
|
|
|
|
Each row consists of cells containing arbitrary text, in which [inlines] are
|
|
parsed, separated by pipes (`|`). A leading and trailing pipe is also
|
|
recommended for clarity of reading, and if there's otherwise parsing ambiguity.
|
|
Spaces between pipes and cell content are trimmed. Block-level elements cannot
|
|
be inserted in a table.
|
|
|
|
The [delimiter row](@) consists of cells whose only content are hyphens (`-`),
|
|
and optionally, a leading or trailing colon (`:`), or both, to indicate left,
|
|
right, or center alignment respectively.
|
|
|
|
```````````````````````````````` example
|
|
| foo | bar |
|
|
| --- | --- |
|
|
| baz | bim |
|
|
.
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>foo</th>
|
|
<th>bar</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>baz</td>
|
|
<td>bim</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
````````````````````````````````
|
|
|
|
Cells in one column don't need to match length, though it's easier to read if
|
|
they are. Likewise, use of leading and trailing pipes may be inconsistent:
|
|
|
|
```````````````````````````````` example
|
|
| abc | defghi |
|
|
:-: | -----------:
|
|
bar | baz
|
|
.
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th align="center">abc</th>
|
|
<th align="right">defghi</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td align="center">bar</td>
|
|
<td align="right">baz</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
````````````````````````````````
|
|
|
|
Include a pipe in a cell's content by escaping it, including inside other
|
|
inline spans:
|
|
|
|
```````````````````````````````` example
|
|
| f\|oo |
|
|
| ------ |
|
|
| b `\|` az |
|
|
| b **\|** im |
|
|
.
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>f|oo</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>b <code>\|</code> az</td>
|
|
</tr>
|
|
<tr>
|
|
<td>b <strong>|</strong> im</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
````````````````````````````````
|
|
|
|
The table is broken at the first empty line, or beginning of another
|
|
block-level structure:
|
|
|
|
```````````````````````````````` example
|
|
| abc | def |
|
|
| --- | --- |
|
|
| bar | baz |
|
|
> bar
|
|
.
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>abc</th>
|
|
<th>def</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>bar</td>
|
|
<td>baz</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<blockquote>
|
|
<p>bar</p>
|
|
</blockquote>
|
|
````````````````````````````````
|
|
|
|
```````````````````````````````` example
|
|
| abc | def |
|
|
| --- | --- |
|
|
| bar | baz |
|
|
bar
|
|
|
|
bar
|
|
.
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>abc</th>
|
|
<th>def</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>bar</td>
|
|
<td>baz</td>
|
|
</tr>
|
|
<tr>
|
|
<td>bar</td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>bar</p>
|
|
````````````````````````````````
|
|
|
|
The header row must match the [delimiter row] in the number of cells. If not,
|
|
a table will not be recognized:
|
|
|
|
```````````````````````````````` example
|
|
| abc | def |
|
|
| --- |
|
|
| bar |
|
|
.
|
|
<p>| abc | def |
|
|
| --- |
|
|
| bar |</p>
|
|
````````````````````````````````
|
|
|
|
The remainder of the table's rows may vary in the number of cells. If there
|
|
are a number of cells fewer than the number of cells in the header row, empty
|
|
cells are inserted. If there are greater, the excess is ignored:
|
|
|
|
```````````````````````````````` example
|
|
| abc | def |
|
|
| --- | --- |
|
|
| bar |
|
|
| bar | baz | boo |
|
|
.
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>abc</th>
|
|
<th>def</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>bar</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>bar</td>
|
|
<td>baz</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
````````````````````````````````
|
|
|
|
If there are no rows in the body, no `<tbody>` is generated in HTML output:
|
|
|
|
```````````````````````````````` example
|
|
| abc | def |
|
|
| --- | --- |
|
|
.
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>abc</th>
|
|
<th>def</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
````````````````````````````````
|