git.iko.soy/typeable/pandoc
on master help sign in
Docx reader: Code cleanup in parse.

Remove some redundant ways of dealing with Maybe.

commit2396be6f5777ac04067264d489fb84fbec72d164 authorJesse Rosenthal <jrosenthal@jhu.edu> dateWed 25 Jun 2014, 17:12 (12 years ago) parente3beae5
1 file changed+12−38
src/Text/Pandoc/Readers/Docx/Parse.hs+12−38
src/Text/Pandoc/Readers/Docx/Parse.hs+12−38
@@ -148,7 +148,7 @@ absNumElemToAbsNum ns element |
148148 let levelElems = findChildren
149149 (QName "lvl" (lookup "w" ns) (Just "w"))
150150 element
151− levels = mapMaybe id $ map (levelElemToLevel ns) levelElems
151+ levels = mapMaybe (levelElemToLevel ns) levelElems
152152 return $ AbstractNumb absNumId levels
153153absNumElemToAbsNum _ _ = Nothing
154154
@@ -180,8 +180,8 @@ archiveToNumbering zf =
180180 absNumElems = findChildren
181181 (QName "abstractNum" (lookup "w" namespaces) (Just "w"))
182182 numberingElem
183− nums = mapMaybe id $ map (numElemToNum namespaces) numElems
184− absNums = mapMaybe id $ map (absNumElemToAbsNum namespaces) absNumElems
183+ nums = mapMaybe (numElemToNum namespaces) numElems
184+ absNums = mapMaybe (absNumElemToAbsNum namespaces) absNumElems
185185 return $ Numbering namespaces nums absNums
186186
187187data Notes = Notes NameSpaces (Maybe [(String, [BodyPart])]) (Maybe [(String, [BodyPart])])
@@ -193,10 +193,8 @@ noteElemToNote ns element
193193 qURI (elName element) == (lookup "w" ns) =
194194 do
195195 noteId <- findAttr (QName "id" (lookup "w" ns) (Just "w")) element
196− let bps = map fromJust
197− $ filter isJust
198− $ map (elemToBodyPart ns)
199− $ filterChildrenName (isParOrTbl ns) element
196+ let bps = mapMaybe (elemToBodyPart ns)
197+ $ elChildren element
200198 return $ (noteId, bps)
201199noteElemToNote _ _ = Nothing
202200
@@ -210,9 +208,7 @@ elemToNotes :: NameSpaces -> String -> Element -> Maybe [(String, [BodyPart])]
210208elemToNotes ns notetype element
211209 | qName (elName element) == (notetype ++ "s") &&
212210 qURI (elName element) == (lookup "w" ns) =
213− Just $ map fromJust
214− $ filter isJust
215− $ map (noteElemToNote ns)
211+ Just $ mapMaybe (noteElemToNote ns)
216212 $ findChildren (QName notetype (lookup "w" ns) (Just "w")) element
217213elemToNotes _ _ _ = Nothing
218214
@@ -260,25 +256,19 @@ relElemToRelationship _ = Nothing
260256archiveToRelationships :: Archive -> [Relationship]
261257archiveToRelationships archive =
262258 let relPaths = filter filePathIsRel (filesInArchive archive)
263− entries = map fromJust $ filter isJust $ map (\f -> findEntryByPath f archive) relPaths
264− relElems = map fromJust $ filter isJust $ map (parseXMLDoc . UTF8.toStringLazy . fromEntry) entries
265− rels = map fromJust $ filter isJust $ map relElemToRelationship $ concatMap elChildren relElems
259+ entries = mapMaybe (\f -> findEntryByPath f archive) relPaths
260+ relElems = mapMaybe (parseXMLDoc . UTF8.toStringLazy . fromEntry) entries
261+ rels = mapMaybe relElemToRelationship $ concatMap elChildren relElems
266262 in
267263 rels
268264
269265data Body = Body [BodyPart]
270266 deriving Show
271267
272−isParOrTbl :: NameSpaces -> QName -> Bool
273−isParOrTbl ns q = qName q `elem` ["p", "tbl"] &&
274− qURI q == (lookup "w" ns)
275−
276268elemToBody :: NameSpaces -> Element -> Maybe Body
277269elemToBody ns element | qName (elName element) == "body" && qURI (elName element) == (lookup "w" ns) =
278270 Just $ Body
279− $ map fromJust
280− $ filter isJust
281− $ map (elemToBodyPart ns) $ filterChildrenName (isParOrTbl ns) element
271+ $ mapMaybe (elemToBodyPart ns) $ elChildren element
282272elemToBody _ _ = Nothing
283273
284274elemToNumInfo :: NameSpaces -> Element -> Maybe (String, String)
@@ -295,21 +285,6 @@ elemToNumInfo ns element
295285 return (numId, lvl)
296286elemToNumInfo _ _ = Nothing
297287
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−
313288elemToBodyPart :: NameSpaces -> Element -> Maybe BodyPart
314289elemToBodyPart ns element
315290 | qName (elName element) == "p" &&
@@ -382,8 +357,7 @@ elemToParagraphStyle ns element =
382357 Just pPr ->
383358 ParagraphStyle
384359 {pStyle =
385− mapMaybe id $
386− map
360+ mapMaybe
387361 (findAttr (QName "val" (lookup "w" ns) (Just "w")))
388362 (findChildren (QName "pStyle" (lookup "w" ns) (Just "w")) pPr)
389363 , indent =
@@ -601,7 +575,7 @@ elemToParPart ns element
601575elemToParPart ns element
602576 | qName (elName element) == "hyperlink" &&
603577 qURI (elName element) == (lookup "w" ns) =
604− let runs = map fromJust $ filter isJust $ map (elemToRun ns)
578+ let runs = mapMaybe (elemToRun ns)
605579 $ findChildren (QName "r" (lookup "w" ns) (Just "w")) element
606580 in
607581 case findAttr (QName "anchor" (lookup "w" ns) (Just "w")) element of