Added th to table headers so that styling with things like Twitter Bootstrap and typeset.css work as expected. Cells in headers should always be TH unless they are advisory cells within headers in which case TD is acceptable (but being Markdown a user with such needs could just enter HTML for this)
David Kitchen david@buro9.com
Wed, 16 Oct 2013 11:36:33 +0100
4 files changed,
39 insertions(+),
5 deletions(-)
M
block.go
→
block.go
@@ -654,7 +654,7 @@ }
// include the newline in data sent to tableRow i++ - p.tableRow(&body, data[rowStart:i], columns) + p.tableRow(&body, data[rowStart:i], columns, false) } p.r.Table(out, header.Bytes(), body.Bytes(), columns)@@ -771,12 +771,12 @@ if col != colCount {
return } - p.tableRow(out, header, columns) + p.tableRow(out, header, columns, true) size = i + 1 return } -func (p *parser) tableRow(out *bytes.Buffer, data []byte, columns []int) { +func (p *parser) tableRow(out *bytes.Buffer, data []byte, columns []int, header bool) { i, col := 0, 0 var rowWork bytes.Buffer@@ -806,12 +806,21 @@ }
var cellWork bytes.Buffer p.inline(&cellWork, data[cellStart:cellEnd]) - p.r.TableCell(&rowWork, cellWork.Bytes(), columns[col]) + + if header { + p.r.TableHeaderCell(&rowWork, cellWork.Bytes(), columns[col]) + } else { + p.r.TableCell(&rowWork, cellWork.Bytes(), columns[col]) + } } // pad it out with empty columns to get the right number for ; col < len(columns); col++ { - p.r.TableCell(&rowWork, nil, columns[col]) + if header { + p.r.TableHeaderCell(&rowWork, nil, columns[col]) + } else { + p.r.TableCell(&rowWork, nil, columns[col]) + } } // silently ignore rows with too many cells
M
html.go
→
html.go
@@ -305,6 +305,23 @@ out.Write(text)
out.WriteString("\n</tr>\n") } +func (options *Html) TableHeaderCell(out *bytes.Buffer, text []byte, align int) { + doubleSpace(out) + switch align { + case TABLE_ALIGNMENT_LEFT: + out.WriteString("<th align=\"left\">") + case TABLE_ALIGNMENT_RIGHT: + out.WriteString("<th align=\"right\">") + case TABLE_ALIGNMENT_CENTER: + out.WriteString("<th align=\"center\">") + default: + out.WriteString("<th>") + } + + out.Write(text) + out.WriteString("</th>") +} + func (options *Html) TableCell(out *bytes.Buffer, text []byte, align int) { doubleSpace(out) switch align {
M
latex.go
→
latex.go
@@ -151,6 +151,13 @@ }
out.Write(text) } +func (options *Latex) TableHeaderCell(out *bytes.Buffer, text []byte, align int) { + if out.Len() > 0 { + out.WriteString(" & ") + } + out.Write(text) +} + func (options *Latex) TableCell(out *bytes.Buffer, text []byte, align int) { if out.Len() > 0 { out.WriteString(" & ")
M
markdown.go
→
markdown.go
@@ -140,6 +140,7 @@ ListItem(out *bytes.Buffer, text []byte, flags int)
Paragraph(out *bytes.Buffer, text func() bool) Table(out *bytes.Buffer, header []byte, body []byte, columnData []int) TableRow(out *bytes.Buffer, text []byte) + TableHeaderCell(out *bytes.Buffer, text []byte, flags int) TableCell(out *bytes.Buffer, text []byte, flags int) Footnotes(out *bytes.Buffer, text func() bool) FootnoteItem(out *bytes.Buffer, name, text []byte, flags int)