Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added th to table headers so that styling with things like Twitter Bo…

…otstrap 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)
  • Loading branch information...
commit 6e6572e9138c3e0ed162b4a8a7382f6c367ff2bc 1 parent 48d1f9d
@buro9 buro9 authored
Showing with 39 additions and 5 deletions.
  1. +14 −5 block.go
  2. +17 −0 html.go
  3. +7 −0 latex.go
  4. +1 −0  markdown.go
View
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
View
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 {
View
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(" & ")
View
1  markdown.go
@@ -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)
Please sign in to comment.
Something went wrong with that request. Please try again.