mirror of
https://github.com/russross/blackfriday.git
synced 2024-03-22 13:40:34 +08:00
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)
This commit is contained in:
parent
48d1f9d9cc
commit
6e6572e913
19
block.go
19
block.go
|
@ -654,7 +654,7 @@ func (p *parser) table(out *bytes.Buffer, data []byte) int {
|
|||
|
||||
// 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 @@ func (p *parser) tableHeader(out *bytes.Buffer, data []byte) (size int, columns
|
|||
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 @@ func (p *parser) tableRow(out *bytes.Buffer, data []byte, columns []int) {
|
|||
|
||||
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
|
||||
|
|
17
html.go
17
html.go
|
@ -305,6 +305,23 @@ func (options *Html) TableRow(out *bytes.Buffer, text []byte) {
|
|||
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 {
|
||||
|
|
7
latex.go
7
latex.go
|
@ -151,6 +151,13 @@ func (options *Latex) TableRow(out *bytes.Buffer, text []byte) {
|
|||
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(" & ")
|
||||
|
|
|
@ -140,6 +140,7 @@ type Renderer interface {
|
|||
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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user