- pageName = name
- , pageType = mimeType
- , pageLanguage = lang
- , pageFileName = fileName
- , pageIsTheme = isTheme
- , pageIsFeed = isFeed
- , pageIsLocked = isLocked
- , pageIsBoring = isBoring
- , pageIsBinary = isBinary
- , pageRevision = undefined
- , pageLastMod = undefined
- , pageSummary = summary
- , pageOtherLang = M.fromList otherLang
- , pageContent = content
+ entityName = name
+ , entityType = mimeType
+ , entityLanguage = lang
+ , entityIsTheme = isTheme
+ , entityIsFeed = isFeed
+ , entityIsLocked = isLocked
+ , entityIsBinary = isBinary
+ , entityRevision = undefined
+ , entityLastMod = undefined
+ , entitySummary = summary
+ , entityOtherLang = M.fromList otherLang
+ , entityContent = content
+ , entityUpdateInfo = updateInfo
+ }
+ where
+ dropWhitespace :: String -> String
+ dropWhitespace [] = []
+ dropWhitespace (x:xs)
+ | x == ' ' || x == '\t' || x == '\n'
+ = dropWhitespace xs
+ | otherwise
+ = x : dropWhitespace xs
+
+
+parseUpdateInfo :: (ArrowXml a, ArrowChoice a) => a XmlTree UpdateInfo
+parseUpdateInfo
+ = proc tree
+ -> do uInfo <- getXPathTreesInDoc "/page/updateInfo" -< tree
+ oldRev <- (getAttrValue0 "oldRevision" >>> arr read) -< uInfo
+ oldName <- maybeA (getXPathTrees "/updateInfo/move/@from/text()" >>> getText) -< uInfo
+ returnA -< UpdateInfo {
+ uiOldRevision = oldRev
+ , uiOldName = oldName