git.iko.soy/typeable/pandoc
on master help sign in
HTML reader tests: improve test coverage of new features
commit8c38390038edcebd55f9dec8359ef983f3813425 authorAlbert Krewinkel <albert@zeitkraut.de> dateFri 27 Nov 2020, 21:21 (6 years ago) parent3a2d993
3 files changed+187−1
src/Text/Pandoc/Readers/HTML/Table.hs+2−1 test/html-reader.html+76 test/html-reader.native+109
src/Text/Pandoc/Readers/HTML/Table.hs+2−1
@@ -214,7 +214,8 @@ normalize :: [ColWidth] -> TableHead -> [TableBody] -> TableFoot
214214 -> Either String ([ColSpec], TableHead, [TableBody], TableFoot)
215215normalize widths head' bodies foot = do
216216 let rows = headRows head' <> concatMap bodyRows bodies <> footRows foot
217− let rowLength = length . rowCells
217+ let cellWidth (Cell _ _ _ (ColSpan cs) _) = cs
218+ let rowLength = foldr (\cell acc -> cellWidth cell + acc) 0 . rowCells
218219 let ncols = maximum (map rowLength rows)
219220 let tblType = tableType (map rowCells rows)
220221 -- fail on empty table
test/html-reader.html+76
@@ -487,6 +487,7 @@ An e-mail address: nobody [at] nowhere.net<blockquote>
487487 </tbody>
488488</table>
489489<hr />
490+<p>Row headers</p>
490491<table>
491492 <thead>
492493 <tr>
@@ -656,6 +657,7 @@ An e-mail address: nobody [at] nowhere.net<blockquote>
656657 </tbody>
657658</table>
658659<hr />
660+<p>tbody tags omitted</p>
659661<table>
660662 <tr>
661663 <td>1</td>
@@ -669,6 +671,7 @@ An e-mail address: nobody [at] nowhere.net<blockquote>
669671 </tr>
670672</table>
671673<hr />
674+<p>empty head</p>
672675<table>
673676 <thead>
674677 </thead>
@@ -686,6 +689,7 @@ An e-mail address: nobody [at] nowhere.net<blockquote>
686689 </tbody>
687690</table>
688691<hr />
692+<p>explicit body and foot</p>
689693<table>
690694 <tbody>
691695 <tr>
@@ -702,6 +706,78 @@ An e-mail address: nobody [at] nowhere.net<blockquote>
702706 </tr>
703707 </tfoot>
704708</table>
709+<h2>Colspans and Rowspans</h2>
710+<table>
711+ <tr>
712+ <td colspan="2">1 and 2</td>
713+ <td>3</td>
714+ </tr>
715+ <tr>
716+ <td colspan="3">4, 5, and 6</td>
717+ </tr>
718+</table>
719+<hr/>
720+<table>
721+ <thead>
722+ <tr>
723+ <th colspan="3">Numbers</th>
724+ </tr>
725+ </thead>
726+ <tbody>
727+ <tr>
728+ <td rowspan="2">1 and 4</td>
729+ <td>2</td>
730+ <td>3</td>
731+ </tr>
732+ <tr>
733+ <td>5</td>
734+ <td>6</td>
735+ </tr>
736+ </tbody>
737+</table>
738+<h2>Attributes</h2>
739+<table id="attrib-test-table">
740+ <thead class="table-head">
741+ <tr class="table-head-row">
742+ <th abbr="x" colspan="3">Cat X</th>
743+ </tr>
744+ <tbody data-part="body" class="main">
745+ <tr data-part="row">
746+ <td data-part="cell">1</td>
747+ <td valign="bottom">2</td>
748+ <td style="color: #151950">3</td>
749+ </tr>
750+ </tbody>
751+ <tfoot class="summary">
752+ <tr bgcolor="#ccc">
753+ <td data-square="true">4</td>
754+ <td>5</td>
755+ <td>6</td>
756+ </tr>
757+ </tfoot>
758+</table>
759+<h2>Tag omission</h2>
760+<p>thead, tbody, and tfoot</p>
761+<table>
762+ <thead>
763+ <tr>
764+ <td>X</td>
765+ <td>Y</td>
766+ <td>Z</td>
767+ </tr>
768+ <tbody>
769+ <tr>
770+ <td>1</td>
771+ <td>2</td>
772+ <td>3</td>
773+ </tr>
774+ <tfoot>
775+ <tr>
776+ <td>4</td>
777+ <td>5</td>
778+ <td>6</td>
779+ </tr>
780+</table>
705781<h2>Empty Tables</h2>
706782<p>This section should be empty.</p>
707783<table>
test/html-reader.native+109
@@ -395,6 +395,7 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl
395395 (TableFoot ("",[],[])
396396 [])
397397,HorizontalRule
398+,Para [Str "Row",Space,Str "headers"]
398399,Table ("",[],[]) (Caption Nothing
399400 [])
400401 [(AlignDefault,ColWidthDefault)
@@ -647,6 +648,7 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl
647648 (TableFoot ("",[],[])
648649 [])
649650,HorizontalRule
651+,Para [Str "tbody",Space,Str "tags",Space,Str "omitted"]
650652,Table ("",[],[]) (Caption Nothing
651653 [])
652654 [(AlignDefault,ColWidthDefault)
@@ -673,6 +675,7 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl
673675 (TableFoot ("",[],[])
674676 [])
675677,HorizontalRule
678+,Para [Str "empty",Space,Str "head"]
676679,Table ("",[],[]) (Caption Nothing
677680 [])
678681 [(AlignDefault,ColWidthDefault)
@@ -699,6 +702,7 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl
699702 (TableFoot ("",[],[])
700703 [])
701704,HorizontalRule
705+,Para [Str "explicit",Space,Str "body",Space,Str "and",Space,Str "foot"]
702706,Table ("",[],[]) (Caption Nothing
703707 [])
704708 [(AlignDefault,ColWidthDefault)
@@ -723,5 +727,110 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl
723727 [Plain [Str "5"]]
724728 ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
725729 [Plain [Str "6"]]]])
730+,Header 2 ("colspans-and-rowspans",[],[]) [Str "Colspans",Space,Str "and",Space,Str "Rowspans"]
731+,Table ("",[],[]) (Caption Nothing
732+ [])
733+ [(AlignDefault,ColWidthDefault)
734+ ,(AlignDefault,ColWidthDefault)
735+ ,(AlignDefault,ColWidthDefault)]
736+ (TableHead ("",[],[])
737+ [])
738+ [(TableBody ("",[],[]) (RowHeadColumns 0)
739+ []
740+ [Row ("",[],[])
741+ [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2)
742+ [Plain [Str "1",Space,Str "and",Space,Str "2"]]
743+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
744+ [Plain [Str "3"]]]
745+ ,Row ("",[],[])
746+ [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 3)
747+ [Plain [Str "4,",Space,Str "5,",Space,Str "and",Space,Str "6"]]]])]
748+ (TableFoot ("",[],[])
749+ [])
750+,HorizontalRule
751+,Table ("",[],[]) (Caption Nothing
752+ [])
753+ [(AlignDefault,ColWidthDefault)
754+ ,(AlignDefault,ColWidthDefault)
755+ ,(AlignDefault,ColWidthDefault)]
756+ (TableHead ("",[],[])
757+ [Row ("",[],[])
758+ [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 3)
759+ [Plain [Str "Numbers"]]]])
760+ [(TableBody ("",[],[]) (RowHeadColumns 0)
761+ []
762+ [Row ("",[],[])
763+ [Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1)
764+ [Plain [Str "1",Space,Str "and",Space,Str "4"]]
765+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
766+ [Plain [Str "2"]]
767+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
768+ [Plain [Str "3"]]]
769+ ,Row ("",[],[])
770+ [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
771+ [Plain [Str "5"]]
772+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
773+ [Plain [Str "6"]]]])]
774+ (TableFoot ("",[],[])
775+ [])
776+,Header 2 ("attributes",[],[]) [Str "Attributes"]
777+,Table ("attrib-test-table",[],[]) (Caption Nothing
778+ [])
779+ [(AlignDefault,ColWidthDefault)
780+ ,(AlignDefault,ColWidthDefault)
781+ ,(AlignDefault,ColWidthDefault)]
782+ (TableHead ("",["table-head"],[])
783+ [Row ("",["table-head-row"],[])
784+ [Cell ("",[],[("abbr","x")]) AlignDefault (RowSpan 1) (ColSpan 3)
785+ [Plain [Str "Cat",Space,Str "X"]]]])
786+ [(TableBody ("",["main"],[("part","body")]) (RowHeadColumns 0)
787+ []
788+ [Row ("",[],[("part","row")])
789+ [Cell ("",[],[("part","cell")]) AlignDefault (RowSpan 1) (ColSpan 1)
790+ [Plain [Str "1"]]
791+ ,Cell ("",[],[("valign","bottom")]) AlignDefault (RowSpan 1) (ColSpan 1)
792+ [Plain [Str "2"]]
793+ ,Cell ("",[],[("style","color: #151950")]) AlignDefault (RowSpan 1) (ColSpan 1)
794+ [Plain [Str "3"]]]])]
795+ (TableFoot ("",["summary"],[])
796+ [Row ("",[],[("bgcolor","#ccc")])
797+ [Cell ("",[],[("square","true")]) AlignDefault (RowSpan 1) (ColSpan 1)
798+ [Plain [Str "4"]]
799+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
800+ [Plain [Str "5"]]
801+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
802+ [Plain [Str "6"]]]])
803+,Header 2 ("tag-omission",[],[]) [Str "Tag",Space,Str "omission"]
804+,Para [Str "thead,",Space,Str "tbody,",Space,Str "and",Space,Str "tfoot"]
805+,Table ("",[],[]) (Caption Nothing
806+ [])
807+ [(AlignDefault,ColWidthDefault)
808+ ,(AlignDefault,ColWidthDefault)
809+ ,(AlignDefault,ColWidthDefault)]
810+ (TableHead ("",[],[])
811+ [Row ("",[],[])
812+ [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
813+ [Plain [Str "X"]]
814+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
815+ [Plain [Str "Y"]]
816+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
817+ [Plain [Str "Z"]]]])
818+ [(TableBody ("",[],[]) (RowHeadColumns 0)
819+ []
820+ [Row ("",[],[])
821+ [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
822+ [Plain [Str "1"]]
823+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
824+ [Plain [Str "2"]]
825+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
826+ [Plain [Str "3"]]]])]
827+ (TableFoot ("",[],[])
828+ [Row ("",[],[])
829+ [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
830+ [Plain [Str "4"]]
831+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
832+ [Plain [Str "5"]]
833+ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
834+ [Plain [Str "6"]]]])
726835,Header 2 ("empty-tables",[],[]) [Str "Empty",Space,Str "Tables"]
727836,Para [Str "This",Space,Str "section",Space,Str "should",Space,Str "be",Space,Str "empty."]]