git.iko.soy/typeable/pandoc
on master help sign in
Account for external link URLs with anchors
196c4f2Caleb McDaniel
src/Text/Pandoc/Readers/Docx/Parse.hs+10−7
@@ -663,17 +663,20 @@ elemToParPart ns element
663 return $ BookMark bmId bmName
663 return $ BookMark bmId bmName
664elemToParPart ns element
664elemToParPart ns element
665 | isElem ns "w" "hyperlink" element
665 | isElem ns "w" "hyperlink" element
666− , Just anchor <- findAttr (elemName ns "w" "anchor") element = do
666+ , Just relId <- findAttr (elemName ns "r" "id") element = do
667 runs <- mapD (elemToRun ns) (elChildren element)
667 runs <- mapD (elemToRun ns) (elChildren element)
668− return $ InternalHyperLink anchor runs
668+ rels <- asks envRelationships
669+ case lookupRelationship relId rels of
670+ Just target -> do
671+ case findAttr (elemName ns "w" "anchor") element of
672+ Just anchor -> return $ ExternalHyperLink (target ++ '#':anchor) runs
673+ Nothing -> return $ ExternalHyperLink target runs
674+ Nothing -> return $ ExternalHyperLink "" runs
669elemToParPart ns element
675elemToParPart ns element
670 | isElem ns "w" "hyperlink" element
676 | isElem ns "w" "hyperlink" element
671− , Just relId <- findAttr (elemName ns "r" "id") element = do
677+ , Just anchor <- findAttr (elemName ns "w" "anchor") element = do
672 runs <- mapD (elemToRun ns) (elChildren element)
678 runs <- mapD (elemToRun ns) (elChildren element)
673− rels <- asks envRelationships
679+ return $ InternalHyperLink anchor runs
674− return $ case lookupRelationship relId rels of
675− Just target -> ExternalHyperLink target runs
676− Nothing -> ExternalHyperLink "" runs
677elemToParPart ns element
680elemToParPart ns element
678 | isElem ns "m" "oMath" element =
681 | isElem ns "m" "oMath" element =
679 (eitherToD $ readOMML $ showElement element) >>= (return . PlainOMath)
682 (eitherToD $ readOMML $ showElement element) >>= (return . PlainOMath)