git.iko.soy/typeable/pandoc
on master help sign in
HTML writer: support attributes on all table elements

Add attributes to tbody and tr elements.

commit871164051281b50a5b4b28cacee3dd15344d81f1 authorAlbert Krewinkel <albert@zeitkraut.de> dateSun 13 Sep 2020, 20:23 (6 years ago) parentcae155b
4 files changed+43−39
src/Text/Pandoc/Writers/HTML.hs+10−6 test/tables/nordics.html4+11−11 test/tables/nordics.html5+11−11 test/tables/nordics.native+11−11
src/Text/Pandoc/Writers/HTML.hs+10−6
@@ -948,8 +948,8 @@ tableBodyToHtml :: PandocMonad m
948948 => WriterOptions
949949 -> Ann.TableBody
950950 -> StateT WriterState m Html
951−tableBodyToHtml opts (Ann.TableBody _attr _rowHeadCols _intm rows) =
952− H.tbody <$> bodyRowsToHtml opts rows
951+tableBodyToHtml opts (Ann.TableBody attr _rowHeadCols _intm rows) =
952+ addAttrs opts attr . H.tbody =<< bodyRowsToHtml opts rows
953953
954954tableHeadToHtml :: PandocMonad m
955955 => WriterOptions
@@ -1060,7 +1060,7 @@ tableRowToHtml :: PandocMonad m
10601060 => WriterOptions
10611061 -> TableRow
10621062 -> StateT WriterState m Html
1063−tableRowToHtml opts (TableRow tblpart _attr rownum rowhead rowbody) = do
1063+tableRowToHtml opts (TableRow tblpart attr rownum rowhead rowbody) = do
10641064 let rowclass = A.class_ $ case rownum of
10651065 Ann.RowNumber x | x `rem` 2 == 1 -> "odd"
10661066 _ | tblpart /= Thead -> "even"
@@ -1068,10 +1068,14 @@ tableRowToHtml opts (TableRow tblpart _attr rownum rowhead rowbody) = do
10681068 let celltype = case tblpart of
10691069 Thead -> HeaderCell
10701070 _ -> BodyCell
1071− head' <- mapM (cellToHtml opts HeaderCell) rowhead
1072− body <- mapM (cellToHtml opts celltype) rowbody
1071+ headcells <- mapM (cellToHtml opts HeaderCell) rowhead
1072+ bodycells <- mapM (cellToHtml opts celltype) rowbody
1073+ rowHtml <- addAttrs opts attr $ H.tr ! rowclass $ do
1074+ nl opts
1075+ mconcat headcells
1076+ mconcat bodycells
10731077 return $ do
1074− H.tr ! rowclass $ nl opts *> mconcat (head' <> body)
1078+ rowHtml
10751079 nl opts
10761080
10771081alignmentToString :: Alignment -> Maybe Text
test/tables/nordics.html4+11−11
@@ -1,4 +1,4 @@
1−<table>
1+<table id="nordics" source="wikipedia">
22<caption><p>States belonging to the <em>Nordics.</em></p></caption>
33<colgroup>
44<col width="30%" />
@@ -6,7 +6,7 @@
66<col width="20%" />
77<col width="20%" />
88</colgroup>
9−<thead>
9+<thead class="simple-head">
1010<tr class="header">
1111<th align="center">Name</th>
1212<th align="center">Capital</th>
@@ -16,43 +16,43 @@
1616(in km<sup>2</sup>)</th>
1717</tr>
1818</thead>
19−<tbody>
20−<tr class="odd">
19+<tbody class="souvereign-states">
20+<tr class="odd" class="country">
2121<th align="center">Denmark</th>
2222<td align="left">Copenhagen</td>
2323<td align="left">5,809,502</td>
2424<td align="left">43,094</td>
2525</tr>
26−<tr class="even">
26+<tr class="even" class="country">
2727<th align="center">Finland</th>
2828<td align="left">Helsinki</td>
2929<td align="left">5,537,364</td>
3030<td align="left">338,145</td>
3131</tr>
32−<tr class="odd">
32+<tr class="odd" class="country">
3333<th align="center">Iceland</th>
3434<td align="left">Reykjavik</td>
3535<td align="left">343,518</td>
3636<td align="left">103,000</td>
3737</tr>
38−<tr class="even">
38+<tr class="even" class="country">
3939<th align="center">Norway</th>
4040<td align="left">Oslo</td>
4141<td align="left">5,372,191</td>
4242<td align="left">323,802</td>
4343</tr>
44−<tr class="odd">
44+<tr class="odd" class="country">
4545<th align="center">Sweden</th>
4646<td align="left">Stockholm</td>
4747<td align="left">10,313,447</td>
4848<td align="left">450,295</td>
4949</tr>
5050</tbody><tfoot>
51−<tr class="even">
51+<tr class="even" id="summary">
5252<td align="center">Total</td>
5353<td align="left"></td>
54−<td align="left">27,376,022</td>
55−<td align="left">1,258,336</td>
54+<td align="left" id="total-population">27,376,022</td>
55+<td align="left" id="total-area">1,258,336</td>
5656</tr>
5757</tfoot>
5858
test/tables/nordics.html5+11−11
@@ -1,4 +1,4 @@
1−<table>
1+<table id="nordics" data-source="wikipedia">
22<caption><p>States belonging to the <em>Nordics.</em></p></caption>
33<colgroup>
44<col style="width: 30%" />
@@ -6,7 +6,7 @@
66<col style="width: 20%" />
77<col style="width: 20%" />
88</colgroup>
9−<thead>
9+<thead class="simple-head">
1010<tr class="header">
1111<th style="text-align: center;">Name</th>
1212<th style="text-align: center;">Capital</th>
@@ -16,43 +16,43 @@
1616(in km<sup>2</sup>)</th>
1717</tr>
1818</thead>
19−<tbody>
20−<tr class="odd">
19+<tbody class="souvereign-states">
20+<tr class="odd" class="country">
2121<th style="text-align: center;">Denmark</th>
2222<td style="text-align: left;">Copenhagen</td>
2323<td style="text-align: left;">5,809,502</td>
2424<td style="text-align: left;">43,094</td>
2525</tr>
26−<tr class="even">
26+<tr class="even" class="country">
2727<th style="text-align: center;">Finland</th>
2828<td style="text-align: left;">Helsinki</td>
2929<td style="text-align: left;">5,537,364</td>
3030<td style="text-align: left;">338,145</td>
3131</tr>
32−<tr class="odd">
32+<tr class="odd" class="country">
3333<th style="text-align: center;">Iceland</th>
3434<td style="text-align: left;">Reykjavik</td>
3535<td style="text-align: left;">343,518</td>
3636<td style="text-align: left;">103,000</td>
3737</tr>
38−<tr class="even">
38+<tr class="even" class="country">
3939<th style="text-align: center;">Norway</th>
4040<td style="text-align: left;">Oslo</td>
4141<td style="text-align: left;">5,372,191</td>
4242<td style="text-align: left;">323,802</td>
4343</tr>
44−<tr class="odd">
44+<tr class="odd" class="country">
4545<th style="text-align: center;">Sweden</th>
4646<td style="text-align: left;">Stockholm</td>
4747<td style="text-align: left;">10,313,447</td>
4848<td style="text-align: left;">450,295</td>
4949</tr>
5050</tbody><tfoot>
51−<tr class="even">
51+<tr class="even" id="summary">
5252<td style="text-align: center;">Total</td>
5353<td style="text-align: left;"></td>
54−<td style="text-align: left;">27,376,022</td>
55−<td style="text-align: left;">1,258,336</td>
54+<td style="text-align: left;" id="total-population">27,376,022</td>
55+<td style="text-align: left;" id="total-area">1,258,336</td>
5656</tr>
5757</tfoot>
5858
test/tables/nordics.native+11−11
@@ -1,46 +1,46 @@
1−[Table ("",[],[]) (Caption (Just [Str "Nordic countries"])
1+[Table ("nordics",[],[("source","wikipedia")]) (Caption (Just [Str "Nordic countries"])
22 [Para [Str "States", Space, Str "belonging", Space, Str "to", Space, Str "the", Space, Emph [Str "Nordics."]]])
33 [(AlignCenter,ColWidth 0.3)
44 ,(AlignLeft,ColWidth 0.3)
55 ,(AlignLeft,ColWidth 0.2)
66 ,(AlignLeft,ColWidth 0.2)]
7− (TableHead ("",[],[])
7+ (TableHead ("",["simple-head"],[])
88 [Row ("",[],[])
99 [Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Name"]]
1010 ,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Capital"]]
1111 ,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Population", LineBreak, Str "(in", Space, Str "2018)"]]
1212 ,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1) [Plain [Str "Area", LineBreak, Str "(in", Space, Str "km", Superscript [Str "2"], Str ")"]]]])
13− [(TableBody ("",[],[]) (RowHeadColumns 1)
13+ [(TableBody ("",["souvereign-states"],[]) (RowHeadColumns 1)
1414 []
15− [Row ("",[],[])
15+ [Row ("",["country"],[])
1616 [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Denmark"]]
1717 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Copenhagen"]]
1818 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5,809,502"]]
1919 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "43,094"]]]
20− ,Row ("",[],[])
20+ ,Row ("",["country"],[])
2121 [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Finland"]]
2222 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Helsinki"]]
2323 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5,537,364"]]
2424 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "338,145"]]]
25− ,Row ("",[],[])
25+ ,Row ("",["country"],[])
2626 [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Iceland"]]
2727 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Reykjavik"]]
2828 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "343,518"]]
2929 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "103,000"]]]
30− ,Row ("",[],[])
30+ ,Row ("",["country"],[])
3131 [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Norway"]]
3232 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Oslo"]]
3333 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "5,372,191"]]
3434 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "323,802"]]]
35− ,Row ("",[],[])
35+ ,Row ("",["country"],[])
3636 [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Sweden"]]
3737 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Stockholm"]]
3838 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "10,313,447"]]
3939 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "450,295"]]]])]
4040 (TableFoot ("",[],[])
41− [Row ("",[],[])
41+ [Row ("summary",[],[])
4242 [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Total"]]
4343 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []
44− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "27,376,022"]]
45− ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1,258,336"]]]])
44+ ,Cell ("total-population",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "27,376,022"]]
45+ ,Cell ("total-area",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "1,258,336"]]]])
4646]