Skip to content

Commit a87f67e

Browse files
committed
\#8986 fix bug of meta by splitting
1 parent 156180b commit a87f67e

File tree

3 files changed

+286
-140
lines changed

3 files changed

+286
-140
lines changed

src/Text/Pandoc/Readers/Docx.hs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ import Control.Monad.State.Strict
7373
import Data.Bifunctor (bimap, first)
7474
import qualified Data.ByteString.Lazy as B
7575
import Data.Default (Default)
76-
import Data.List (delete, intersect, foldl')
76+
import Data.List (partition, delete, intersect, foldl')
7777
import Data.Char (isSpace)
7878
import qualified Data.Map as M
7979
import qualified Data.Text as T
@@ -177,7 +177,13 @@ metaStyles = M.fromList [ ("Title", "title")
177177
, ("Abstract", "abstract")]
178178

179179
sepBodyParts :: [BodyPart] -> ([BodyPart], [BodyPart])
180-
sepBodyParts = span (\bp -> isMetaPar bp || isEmptyPar bp)
180+
sepBodyParts bps = (metaWithoutEmpty, nonMetaFirst ++ emptyPars ++ nonMetaLast)
181+
where
182+
(nonMetaFirst, rest) = break isMetaOrEmpty bps
183+
(meta, nonMetaLast) = span isMetaOrEmpty rest
184+
isMetaOrEmpty bp = isMetaPar bp || isEmptyPar bp
185+
186+
(metaWithoutEmpty, emptyPars) = partition (not . isEmptyPar) meta
181187

182188
isMetaPar :: BodyPart -> Bool
183189
isMetaPar (Paragraph pPr _) =

test/docx/0_level_headers.native

Lines changed: 182 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,182 @@
1-
[Table ("",[],[]) (Caption Nothing
2-
[])
3-
[(AlignDefault,ColWidth 1.0)]
4-
(TableHead ("",[],[])
5-
[])
6-
[(TableBody ("",[],[]) (RowHeadColumns 0)
7-
[]
8-
[Row ("",[],[])
9-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
10-
[]]
11-
,Row ("",[],[])
12-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
13-
[Plain [Str "User\8217s",Space,Str "Guide"]]]
14-
,Row ("",[],[])
15-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
16-
[]]
17-
,Row ("",[],[])
18-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
19-
[]]
20-
,Row ("",[],[])
21-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
22-
[]]
23-
,Row ("",[],[])
24-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
25-
[Plain [Str "11",Space,Str "August",Space,Str "2017"]]]
26-
,Row ("",[],[])
27-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
28-
[]]
29-
,Row ("",[],[])
30-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
31-
[]]
32-
,Row ("",[],[])
33-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
34-
[]]
35-
,Row ("",[],[])
36-
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
37-
[]]])]
38-
(TableFoot ("",[],[])
39-
[])
40-
,Para [Str "CONTENTS"]
41-
,Para [Strong [Str "Section",Space,Str "Page"]]
42-
,Para [Str "FIGURES",Space,Link ("",[],[]) [Str "iv"] ("#figures","")]
43-
,Para [Str "TABLES",Space,Link ("",[],[]) [Str "v"] ("#tables","")]
44-
,Para [Str "SECTION",Space,Str "1",Space,Str "Introduction",Space,Link ("",[],[]) [Str "2"] ("#introduction","")]
45-
,Header 1 ("figures",["Heading-0"],[]) [Str "FIGURES"]
46-
,Para [Strong [Str "Figure",Space,Str "Page"]]
47-
,Para [Strong [Str "No",Space,Str "table",Space,Str "of",Space,Str "figures",Space,Str "entries",Space,Str "found."]]
48-
,Header 1 ("tables",["Heading-0"],[]) [Str "TABLES"]
49-
,Para [Strong [Str "Table",Space,Str "Page"]]
50-
,Para [Strong [Str "No",Space,Str "table",Space,Str "of",Space,Str "figures",Space,Str "entries",Space,Str "found."]]
51-
,Header 1 ("introduction",[],[]) [Str "Introduction"]
52-
,Para [Str "Nothing",Space,Str "to",Space,Str "introduce,",Space,Str "yet."]]
1+
Pandoc
2+
Meta
3+
{ unMeta =
4+
fromList [ ( "title" , MetaInlines [ Str "CONTENTS" ] ) ]
5+
}
6+
[ Table
7+
( "" , [] , [] )
8+
(Caption Nothing [])
9+
[ ( AlignDefault , ColWidth 1.0 ) ]
10+
(TableHead ( "" , [] , [] ) [])
11+
[ TableBody
12+
( "" , [] , [] )
13+
(RowHeadColumns 0)
14+
[]
15+
[ Row
16+
( "" , [] , [] )
17+
[ Cell
18+
( "" , [] , [] )
19+
AlignDefault
20+
(RowSpan 1)
21+
(ColSpan 1)
22+
[]
23+
]
24+
, Row
25+
( "" , [] , [] )
26+
[ Cell
27+
( "" , [] , [] )
28+
AlignDefault
29+
(RowSpan 1)
30+
(ColSpan 1)
31+
[ Plain [ Str "User\8217s" , Space , Str "Guide" ] ]
32+
]
33+
, Row
34+
( "" , [] , [] )
35+
[ Cell
36+
( "" , [] , [] )
37+
AlignDefault
38+
(RowSpan 1)
39+
(ColSpan 1)
40+
[]
41+
]
42+
, Row
43+
( "" , [] , [] )
44+
[ Cell
45+
( "" , [] , [] )
46+
AlignDefault
47+
(RowSpan 1)
48+
(ColSpan 1)
49+
[]
50+
]
51+
, Row
52+
( "" , [] , [] )
53+
[ Cell
54+
( "" , [] , [] )
55+
AlignDefault
56+
(RowSpan 1)
57+
(ColSpan 1)
58+
[]
59+
]
60+
, Row
61+
( "" , [] , [] )
62+
[ Cell
63+
( "" , [] , [] )
64+
AlignDefault
65+
(RowSpan 1)
66+
(ColSpan 1)
67+
[ Plain
68+
[ Str "11"
69+
, Space
70+
, Str "August"
71+
, Space
72+
, Str "2017"
73+
]
74+
]
75+
]
76+
, Row
77+
( "" , [] , [] )
78+
[ Cell
79+
( "" , [] , [] )
80+
AlignDefault
81+
(RowSpan 1)
82+
(ColSpan 1)
83+
[]
84+
]
85+
, Row
86+
( "" , [] , [] )
87+
[ Cell
88+
( "" , [] , [] )
89+
AlignDefault
90+
(RowSpan 1)
91+
(ColSpan 1)
92+
[]
93+
]
94+
, Row
95+
( "" , [] , [] )
96+
[ Cell
97+
( "" , [] , [] )
98+
AlignDefault
99+
(RowSpan 1)
100+
(ColSpan 1)
101+
[]
102+
]
103+
, Row
104+
( "" , [] , [] )
105+
[ Cell
106+
( "" , [] , [] )
107+
AlignDefault
108+
(RowSpan 1)
109+
(ColSpan 1)
110+
[]
111+
]
112+
]
113+
]
114+
(TableFoot ( "" , [] , [] ) [])
115+
, Para [ Strong [ Str "Section" , Space , Str "Page" ] ]
116+
, Para
117+
[ Str "FIGURES"
118+
, Space
119+
, Link ( "" , [] , [] ) [ Str "iv" ] ( "#figures" , "" )
120+
]
121+
, Para
122+
[ Str "TABLES"
123+
, Space
124+
, Link ( "" , [] , [] ) [ Str "v" ] ( "#tables" , "" )
125+
]
126+
, Para
127+
[ Str "SECTION"
128+
, Space
129+
, Str "1"
130+
, Space
131+
, Str "Introduction"
132+
, Space
133+
, Link ( "" , [] , [] ) [ Str "2" ] ( "#introduction" , "" )
134+
]
135+
, Header
136+
1 ( "figures" , [ "Heading-0" ] , [] ) [ Str "FIGURES" ]
137+
, Para [ Strong [ Str "Figure" , Space , Str "Page" ] ]
138+
, Para
139+
[ Strong
140+
[ Str "No"
141+
, Space
142+
, Str "table"
143+
, Space
144+
, Str "of"
145+
, Space
146+
, Str "figures"
147+
, Space
148+
, Str "entries"
149+
, Space
150+
, Str "found."
151+
]
152+
]
153+
, Header
154+
1 ( "tables" , [ "Heading-0" ] , [] ) [ Str "TABLES" ]
155+
, Para [ Strong [ Str "Table" , Space , Str "Page" ] ]
156+
, Para
157+
[ Strong
158+
[ Str "No"
159+
, Space
160+
, Str "table"
161+
, Space
162+
, Str "of"
163+
, Space
164+
, Str "figures"
165+
, Space
166+
, Str "entries"
167+
, Space
168+
, Str "found."
169+
]
170+
]
171+
, Header
172+
1 ( "introduction" , [] , [] ) [ Str "Introduction" ]
173+
, Para
174+
[ Str "Nothing"
175+
, Space
176+
, Str "to"
177+
, Space
178+
, Str "introduce,"
179+
, Space
180+
, Str "yet."
181+
]
182+
]

0 commit comments

Comments
 (0)