From 8c38390038edcebd55f9dec8359ef983f3813425 Mon Sep 17 00:00:00 2001 From: Albert Krewinkel Date: Fri, 27 Nov 2020 21:21:25 +0100 Subject: HTML reader tests: improve test coverage of new features --- src/Text/Pandoc/Readers/HTML/Table.hs | 3 +- test/html-reader.html | 76 ++++++++++++++++++++++++ test/html-reader.native | 109 ++++++++++++++++++++++++++++++++++ 3 files changed, 187 insertions(+), 1 deletion(-) diff --git a/src/Text/Pandoc/Readers/HTML/Table.hs b/src/Text/Pandoc/Readers/HTML/Table.hs index 5a783988f..91639fa4c 100644 --- a/src/Text/Pandoc/Readers/HTML/Table.hs +++ b/src/Text/Pandoc/Readers/HTML/Table.hs @@ -214,7 +214,8 @@ normalize :: [ColWidth] -> TableHead -> [TableBody] -> TableFoot -> Either String ([ColSpec], TableHead, [TableBody], TableFoot) normalize widths head' bodies foot = do let rows = headRows head' <> concatMap bodyRows bodies <> footRows foot - let rowLength = length . rowCells + let cellWidth (Cell _ _ _ (ColSpan cs) _) = cs + let rowLength = foldr (\cell acc -> cellWidth cell + acc) 0 . rowCells let ncols = maximum (map rowLength rows) let tblType = tableType (map rowCells rows) -- fail on empty table diff --git a/test/html-reader.html b/test/html-reader.html index ae937af82..4b688cb20 100644 --- a/test/html-reader.html +++ b/test/html-reader.html @@ -487,6 +487,7 @@ An e-mail address: nobody [at] nowhere.net

+

Row headers

@@ -656,6 +657,7 @@ An e-mail address: nobody [at] nowhere.net

+

tbody tags omitted

@@ -669,6 +671,7 @@ An e-mail address: nobody [at] nowhere.net
1

+

empty head

@@ -686,6 +689,7 @@ An e-mail address: nobody [at] nowhere.net

+

explicit body and foot

@@ -702,6 +706,78 @@ An e-mail address: nobody [at] nowhere.net
+

Colspans and Rowspans

+ + + + + + + + +
1 and 23
4, 5, and 6
+
+ + + + + + + + + + + + + + + + + +
Numbers
1 and 423
56
+

Attributes

+ + + + + + + + + + + + + + + + + + + +
Cat X
123
456
+

Tag omission

+

thead, tbody, and tfoot

+ + + + + + + + + + + + + + + + + + + +
XYZ
123
456

Empty Tables

This section should be empty.

diff --git a/test/html-reader.native b/test/html-reader.native index ea74c25e1..04ec55d1e 100644 --- a/test/html-reader.native +++ b/test/html-reader.native @@ -395,6 +395,7 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl (TableFoot ("",[],[]) []) ,HorizontalRule +,Para [Str "Row",Space,Str "headers"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) @@ -647,6 +648,7 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl (TableFoot ("",[],[]) []) ,HorizontalRule +,Para [Str "tbody",Space,Str "tags",Space,Str "omitted"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) @@ -673,6 +675,7 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl (TableFoot ("",[],[]) []) ,HorizontalRule +,Para [Str "empty",Space,Str "head"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) @@ -699,6 +702,7 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl (TableFoot ("",[],[]) []) ,HorizontalRule +,Para [Str "explicit",Space,Str "body",Space,Str "and",Space,Str "foot"] ,Table ("",[],[]) (Caption Nothing []) [(AlignDefault,ColWidthDefault) @@ -723,5 +727,110 @@ Pandoc (Meta {unMeta = fromList [("generator",MetaInlines [Str "pandoc"]),("titl [Plain [Str "5"]] ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "6"]]]]) +,Header 2 ("colspans-and-rowspans",[],[]) [Str "Colspans",Space,Str "and",Space,Str "Rowspans"] +,Table ("",[],[]) (Caption Nothing + []) + [(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault)] + (TableHead ("",[],[]) + []) + [(TableBody ("",[],[]) (RowHeadColumns 0) + [] + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 2) + [Plain [Str "1",Space,Str "and",Space,Str "2"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "3"]]] + ,Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 3) + [Plain [Str "4,",Space,Str "5,",Space,Str "and",Space,Str "6"]]]])] + (TableFoot ("",[],[]) + []) +,HorizontalRule +,Table ("",[],[]) (Caption Nothing + []) + [(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault)] + (TableHead ("",[],[]) + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 3) + [Plain [Str "Numbers"]]]]) + [(TableBody ("",[],[]) (RowHeadColumns 0) + [] + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 2) (ColSpan 1) + [Plain [Str "1",Space,Str "and",Space,Str "4"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "2"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "3"]]] + ,Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "5"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "6"]]]])] + (TableFoot ("",[],[]) + []) +,Header 2 ("attributes",[],[]) [Str "Attributes"] +,Table ("attrib-test-table",[],[]) (Caption Nothing + []) + [(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault)] + (TableHead ("",["table-head"],[]) + [Row ("",["table-head-row"],[]) + [Cell ("",[],[("abbr","x")]) AlignDefault (RowSpan 1) (ColSpan 3) + [Plain [Str "Cat",Space,Str "X"]]]]) + [(TableBody ("",["main"],[("part","body")]) (RowHeadColumns 0) + [] + [Row ("",[],[("part","row")]) + [Cell ("",[],[("part","cell")]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "1"]] + ,Cell ("",[],[("valign","bottom")]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "2"]] + ,Cell ("",[],[("style","color: #151950")]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "3"]]]])] + (TableFoot ("",["summary"],[]) + [Row ("",[],[("bgcolor","#ccc")]) + [Cell ("",[],[("square","true")]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "4"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "5"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "6"]]]]) +,Header 2 ("tag-omission",[],[]) [Str "Tag",Space,Str "omission"] +,Para [Str "thead,",Space,Str "tbody,",Space,Str "and",Space,Str "tfoot"] +,Table ("",[],[]) (Caption Nothing + []) + [(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault)] + (TableHead ("",[],[]) + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "X"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Y"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Z"]]]]) + [(TableBody ("",[],[]) (RowHeadColumns 0) + [] + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "1"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "2"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "3"]]]])] + (TableFoot ("",[],[]) + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "4"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "5"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "6"]]]]) ,Header 2 ("empty-tables",[],[]) [Str "Empty",Space,Str "Tables"] ,Para [Str "This",Space,Str "section",Space,Str "should",Space,Str "be",Space,Str "empty."]] -- cgit v1.2.3