git.iko.soy/typeable/pandoc
on master help sign in
Merge pull request #1375 from jkr/cleanup
2b958a2John MacFarlane
src/Text/Pandoc/Readers/Docx/Parse.hs+12−38
@@ -148,7 +148,7 @@ absNumElemToAbsNum ns element |
148 let levelElems = findChildren
148 let levelElems = findChildren
149 (QName "lvl" (lookup "w" ns) (Just "w"))
149 (QName "lvl" (lookup "w" ns) (Just "w"))
150 element
150 element
151− levels = mapMaybe id $ map (levelElemToLevel ns) levelElems
151+ levels = mapMaybe (levelElemToLevel ns) levelElems
152 return $ AbstractNumb absNumId levels
152 return $ AbstractNumb absNumId levels
153absNumElemToAbsNum _ _ = Nothing
153absNumElemToAbsNum _ _ = Nothing
154
154
@@ -180,8 +180,8 @@ archiveToNumbering zf =
180 absNumElems = findChildren
180 absNumElems = findChildren
181 (QName "abstractNum" (lookup "w" namespaces) (Just "w"))
181 (QName "abstractNum" (lookup "w" namespaces) (Just "w"))
182 numberingElem
182 numberingElem
183− nums = mapMaybe id $ map (numElemToNum namespaces) numElems
183+ nums = mapMaybe (numElemToNum namespaces) numElems
184− absNums = mapMaybe id $ map (absNumElemToAbsNum namespaces) absNumElems
184+ absNums = mapMaybe (absNumElemToAbsNum namespaces) absNumElems
185 return $ Numbering namespaces nums absNums
185 return $ Numbering namespaces nums absNums
186
186
187data Notes = Notes NameSpaces (Maybe [(String, [BodyPart])]) (Maybe [(String, [BodyPart])])
187data Notes = Notes NameSpaces (Maybe [(String, [BodyPart])]) (Maybe [(String, [BodyPart])])
@@ -193,10 +193,8 @@ noteElemToNote ns element
193 qURI (elName element) == (lookup "w" ns) =
193 qURI (elName element) == (lookup "w" ns) =
194 do
194 do
195 noteId <- findAttr (QName "id" (lookup "w" ns) (Just "w")) element
195 noteId <- findAttr (QName "id" (lookup "w" ns) (Just "w")) element
196− let bps = map fromJust
197− $ filter isJust
198− $ map (elemToBodyPart ns)
196+ let bps = mapMaybe (elemToBodyPart ns)
199− $ filterChildrenName (isParOrTbl ns) element
197+ $ elChildren element
200 return $ (noteId, bps)
198 return $ (noteId, bps)
201noteElemToNote _ _ = Nothing
199noteElemToNote _ _ = Nothing
202
200
@@ -210,9 +208,7 @@ elemToNotes :: NameSpaces -> String -> Element -> Maybe [(String, [BodyPart])]
210elemToNotes ns notetype element
208elemToNotes ns notetype element
211 | qName (elName element) == (notetype ++ "s") &&
209 | qName (elName element) == (notetype ++ "s") &&
212 qURI (elName element) == (lookup "w" ns) =
210 qURI (elName element) == (lookup "w" ns) =
213− Just $ map fromJust
214− $ filter isJust
215− $ map (noteElemToNote ns)
211+ Just $ mapMaybe (noteElemToNote ns)
216 $ findChildren (QName notetype (lookup "w" ns) (Just "w")) element
212 $ findChildren (QName notetype (lookup "w" ns) (Just "w")) element
217elemToNotes _ _ _ = Nothing
213elemToNotes _ _ _ = Nothing
218
214
@@ -260,25 +256,19 @@ relElemToRelationship _ = Nothing
260archiveToRelationships :: Archive -> [Relationship]
256archiveToRelationships :: Archive -> [Relationship]
261archiveToRelationships archive =
257archiveToRelationships archive =
262 let relPaths = filter filePathIsRel (filesInArchive archive)
258 let relPaths = filter filePathIsRel (filesInArchive archive)
263− entries = map fromJust $ filter isJust $ map (\f -> findEntryByPath f archive) relPaths
259+ entries = mapMaybe (\f -> findEntryByPath f archive) relPaths
264− relElems = map fromJust $ filter isJust $ map (parseXMLDoc . UTF8.toStringLazy . fromEntry) entries
260+ relElems = mapMaybe (parseXMLDoc . UTF8.toStringLazy . fromEntry) entries
265− rels = map fromJust $ filter isJust $ map relElemToRelationship $ concatMap elChildren relElems
261+ rels = mapMaybe relElemToRelationship $ concatMap elChildren relElems
266 in
262 in
267 rels
263 rels
268
264
269data Body = Body [BodyPart]
265data Body = Body [BodyPart]
270 deriving Show
266 deriving Show
271
267
272−isParOrTbl :: NameSpaces -> QName -> Bool
273−isParOrTbl ns q = qName q `elem` ["p", "tbl"] &&
274− qURI q == (lookup "w" ns)
275−
276elemToBody :: NameSpaces -> Element -> Maybe Body
268elemToBody :: NameSpaces -> Element -> Maybe Body
277elemToBody ns element | qName (elName element) == "body" && qURI (elName element) == (lookup "w" ns) =
269elemToBody ns element | qName (elName element) == "body" && qURI (elName element) == (lookup "w" ns) =
278 Just $ Body
270 Just $ Body
279− $ map fromJust
280− $ filter isJust
281− $ map (elemToBodyPart ns) $ filterChildrenName (isParOrTbl ns) element
271+ $ mapMaybe (elemToBodyPart ns) $ elChildren element
282elemToBody _ _ = Nothing
272elemToBody _ _ = Nothing
283
273
284elemToNumInfo :: NameSpaces -> Element -> Maybe (String, String)
274elemToNumInfo :: NameSpaces -> Element -> Maybe (String, String)
@@ -295,21 +285,6 @@ elemToNumInfo ns element
295 return (numId, lvl)
285 return (numId, lvl)
296elemToNumInfo _ _ = Nothing
286elemToNumInfo _ _ = Nothing
297
287
298−-- isBookMarkTag :: NameSpaces -> QName -> Bool
299−-- isBookMarkTag ns q = qName q `elem` ["bookmarkStart", "bookmarkEnd"] &&
300−-- qURI q == (lookup "w" ns)
301−
302−-- parChildrenToBookmark :: NameSpaces -> [Element] -> BookMark
303−-- parChildrenToBookmark ns (bms : bme : _)
304−-- | qName (elName bms) == "bookmarkStart" &&
305−-- qURI (elName bms) == (lookup "w" ns) &&
306−-- qName (elName bme) == "bookmarkEnd" &&
307−-- qURI (elName bme) == (lookup "w" ns) = do
308−-- bmId <- findAttr (QName "id" (lookup "w" ns) (Just "w")) bms
309−-- bmName <- findAttr (QName "name" (lookup "w" ns) (Just "w")) bms
310−-- return $ (bmId, bmName)
311−-- parChildrenToBookmark _ _ = Nothing
312−
313elemToBodyPart :: NameSpaces -> Element -> Maybe BodyPart
288elemToBodyPart :: NameSpaces -> Element -> Maybe BodyPart
314elemToBodyPart ns element
289elemToBodyPart ns element
315 | qName (elName element) == "p" &&
290 | qName (elName element) == "p" &&
@@ -382,8 +357,7 @@ elemToParagraphStyle ns element =
382 Just pPr ->
357 Just pPr ->
383 ParagraphStyle
358 ParagraphStyle
384 {pStyle =
359 {pStyle =
385− mapMaybe id $
360+ mapMaybe
386− map
387 (findAttr (QName "val" (lookup "w" ns) (Just "w")))
361 (findAttr (QName "val" (lookup "w" ns) (Just "w")))
388 (findChildren (QName "pStyle" (lookup "w" ns) (Just "w")) pPr)
362 (findChildren (QName "pStyle" (lookup "w" ns) (Just "w")) pPr)
389 , indent =
363 , indent =
@@ -601,7 +575,7 @@ elemToParPart ns element
601elemToParPart ns element
575elemToParPart ns element
602 | qName (elName element) == "hyperlink" &&
576 | qName (elName element) == "hyperlink" &&
603 qURI (elName element) == (lookup "w" ns) =
577 qURI (elName element) == (lookup "w" ns) =
604− let runs = map fromJust $ filter isJust $ map (elemToRun ns)
578+ let runs = mapMaybe (elemToRun ns)
605 $ findChildren (QName "r" (lookup "w" ns) (Just "w")) element
579 $ findChildren (QName "r" (lookup "w" ns) (Just "w")) element
606 in
580 in
607 case findAttr (QName "anchor" (lookup "w" ns) (Just "w")) element of
581 case findAttr (QName "anchor" (lookup "w" ns) (Just "w")) element of