@@ -54,6 +54,7 @@ module Text.Pandoc.Readers.Docx.Parse ( Docx(..)
54 , TrackedChange(..)
54 , TrackedChange(..)
55 , ChangeType(..)
55 , ChangeType(..)
56 , ChangeInfo(..)
56 , ChangeInfo(..)
57 , archiveToDocx
58 , archiveToDocx
58 , archiveToDocxWithWarnings
59 , archiveToDocxWithWarnings
@@ -70,6 +71,7 @@ import qualified Data.Map as M
70import Data.Maybe
71import Data.Maybe
71import System.FilePath
72import System.FilePath
72import Text.Pandoc.Readers.Docx.Util
73import Text.Pandoc.Readers.Docx.Util
74+import Text.Pandoc.Readers.Docx.Fields
73import Text.Pandoc.Shared (filteredFilesFromArchive, safeRead)
75import Text.Pandoc.Shared (filteredFilesFromArchive, safeRead)
74import qualified Text.Pandoc.UTF8 as UTF8
76import qualified Text.Pandoc.UTF8 as UTF8
75import Text.TeXMath (Exp)
77import Text.TeXMath (Exp)
@@ -286,10 +288,6 @@ data Run = Run RunStyle [RunElem]
286 | InlineChart -- placeholder
288 | InlineChart -- placeholder
287 deriving Show
289 deriving Show
289−data FieldInfo = HyperlinkField URL
293data RunElem = TextRun String | LnBrk | Tab | SoftHyphen | NoBreakHyphen
291data RunElem = TextRun String | LnBrk | Tab | SoftHyphen | NoBreakHyphen
294 deriving Show
292 deriving Show
@@ -802,8 +800,18 @@ elemToParPart ns element
802 return NullParPart
800 return NullParPart
803 FldCharContent info runs | fldCharType == "end" -> do
801 FldCharContent info runs | fldCharType == "end" -> do
804 modify $ \st -> st {stateFldCharState = FldCharClosed}
802 modify $ \st -> st {stateFldCharState = FldCharClosed}
805− return $ Field info runs
803+ return $ Field info $ reverse runs
806 _ -> throwError WrongElem
804 _ -> throwError WrongElem
805+elemToParPart ns element
806+ | isElem ns "w" "r" element
807+ , Just instrText <- findChildByName ns "w" "instrText" element = do
808+ fldCharState <- gets stateFldCharState
809+ case fldCharState of
811+ info <- eitherToD $ parseFieldInfo $ strContent instrText
812+ modify $ \st -> st{stateFldCharState = FldCharFieldInfo info}
814+ _ -> return NullParPart
807elemToParPart ns element
815elemToParPart ns element
808 | isElem ns "w" "r" element = do
816 | isElem ns "w" "r" element = do
809 run <- elemToRun ns element
817 run <- elemToRun ns element