@@ -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"))
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
@@ -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
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) =
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
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
@@ -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) =
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
@@ -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
269data Body = Body [BodyPart]
265data Body = Body [BodyPart]
270 deriving Show
266 deriving Show
272−isParOrTbl :: NameSpaces -> QName -> Bool
273−isParOrTbl ns q = qName q `elem` ["p", "tbl"] &&
274− qURI q == (lookup "w" ns)
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
281− $ map (elemToBodyPart ns) $ filterChildrenName (isParOrTbl ns) element
271+ $ mapMaybe (elemToBodyPart ns) $ elChildren element
282elemToBody _ _ = Nothing
272elemToBody _ _ = Nothing
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
298−-- isBookMarkTag :: NameSpaces -> QName -> Bool
299−-- isBookMarkTag ns q = qName q `elem` ["bookmarkStart", "bookmarkEnd"] &&
300−-- qURI q == (lookup "w" ns)
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
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
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
607 case findAttr (QName "anchor" (lookup "w" ns) (Just "w")) element of
581 case findAttr (QName "anchor" (lookup "w" ns) (Just "w")) element of