@@ -216,6 +216,7 @@ data ParagraphStyle = ParagraphStyle { pStyle :: [String]
216216 , pHeading :: Maybe (String, Int)
217217 , pNumInfo :: Maybe (String, String)
218218 , pBlockQuote :: Maybe Bool
219+ , pChange :: Maybe TrackedChange
219220 }
220221 deriving Show
221222
@@ -226,6 +227,7 @@ defaultParagraphStyle = ParagraphStyle { pStyle = []
226227 , pHeading = Nothing
227228 , pNumInfo = Nothing
228229 , pBlockQuote = Nothing
230+ , pChange = Nothing
229231 }
230232
231233
@@ -738,21 +740,9 @@ elemToParPart ns element
738740 | isElem ns "w" "r" element =
739741 elemToRun ns element >>= (\r -> return $ PlainRun r)
740742elemToParPart ns element
741− | isElem ns "w" "ins" element || isElem ns "w" "moveTo" element
742− , Just cId <- findAttrByName ns "w" "id" element
743− , Just cAuthor <- findAttrByName ns "w" "author" element
744− , Just cDate <- findAttrByName ns "w" "date" element = do
745− runs <- mapD (elemToRun ns) (elChildren element)
746− return $ ChangedRuns
747− (TrackedChange Insertion (ChangeInfo cId cAuthor cDate)) runs
748−elemToParPart ns element
749− | isElem ns "w" "del" element || isElem ns "w" "moveFrom" element
750− , Just cId <- findAttrByName ns "w" "id" element
751− , Just cAuthor <- findAttrByName ns "w" "author" element
752− , Just cDate <- findAttrByName ns "w" "date" element = do
753− runs <- mapD (elemToRun ns) (elChildren element)
754− return $ ChangedRuns
755− (TrackedChange Deletion (ChangeInfo cId cAuthor cDate)) runs
743+ | Just change <- getTrackedChange ns element = do
744+ runs <- mapD (elemToRun ns) (elChildren element)
745+ return $ ChangedRuns change runs
756746elemToParPart ns element
757747 | isElem ns "w" "smartTag" element = do
758748 runs <- mapD (elemToRun ns) (elChildren element)
@@ -903,6 +893,21 @@ getParStyleField field stylemap styles
903893 = Just y
904894getParStyleField _ _ _ = Nothing
905895
896+getTrackedChange :: NameSpaces -> Element -> Maybe TrackedChange
897+getTrackedChange ns element
898+ | isElem ns "w" "ins" element || isElem ns "w" "moveTo" element
899+ , Just cId <- findAttrByName ns "w" "id" element
900+ , Just cAuthor <- findAttrByName ns "w" "author" element
901+ , Just cDate <- findAttrByName ns "w" "date" element =
902+ Just $ TrackedChange Insertion (ChangeInfo cId cAuthor cDate)
903+getTrackedChange ns element
904+ | isElem ns "w" "del" element || isElem ns "w" "moveFrom" element
905+ , Just cId <- findAttrByName ns "w" "id" element
906+ , Just cAuthor <- findAttrByName ns "w" "author" element
907+ , Just cDate <- findAttrByName ns "w" "date" element =
908+ Just $ TrackedChange Deletion (ChangeInfo cId cAuthor cDate)
909+getTrackedChange _ _ = Nothing
910+
906911elemToParagraphStyle :: NameSpaces -> Element -> ParStyleMap -> ParagraphStyle
907912elemToParagraphStyle ns element sty
908913 | Just pPr <- findChildByName ns "w" "pPr" element =
@@ -926,6 +931,13 @@ elemToParagraphStyle ns element sty
926931 , pHeading = getParStyleField headingLev sty style
927932 , pNumInfo = getParStyleField numInfo sty style
928933 , pBlockQuote = getParStyleField isBlockQuote sty style
934+ , pChange = findChildByName ns "w" "rPr" pPr >>=
935+ filterChild (\e -> isElem ns "w" "ins" e ||
936+ isElem ns "w" "moveTo" e ||
937+ isElem ns "w" "del" e ||
938+ isElem ns "w" "moveFrom" e
939+ ) >>=
940+ getTrackedChange ns
929941 }
930942elemToParagraphStyle _ _ _ = defaultParagraphStyle
931943