git.iko.soy/typeable/pandoc
on master help sign in
Docx Writer: Have state keep track of dynamic styles.

We want to be able to inject these into our styles.xml.

commit6c6860d076388275f9db77032586563447ecf9cc authorJesse Rosenthal <jrosenthal@jhu.edu> dateMon 15 Aug 2016, 10:27 (10 years ago) parenta362a62
1 file changed+6−2
src/Text/Pandoc/Writers/Docx.hs+6−2
src/Text/Pandoc/Writers/Docx.hs+6−2
@@ -110,6 +110,7 @@ data WriterState = WriterState{
110110 , stStyleMaps :: StyleMaps
111111 , stFirstPara :: Bool
112112 , stTocTitle :: [Inline]
113+ , stDynamicParaProps :: [String]
113114 }
114115
115116defaultWriterState :: WriterState
@@ -132,6 +133,7 @@ defaultWriterState = WriterState{
132133 , stStyleMaps = defaultStyleMaps
133134 , stFirstPara = False
134135 , stTocTitle = normalizeInlines [Str "Table of Contents"]
136+ , stDynamicParaProps = []
135137 }
136138
137139type WS a = StateT WriterState IO a
@@ -729,8 +731,10 @@ dynamicStyleKey = "docx-style"
729731-- | Convert a Pandoc block element to OpenXML.
730732blockToOpenXML :: WriterOptions -> Block -> WS [Element]
731733blockToOpenXML _ Null = return []
732−blockToOpenXML opts (Div (_,_,kvs) bs) | Just sty <- lookup dynamicStyleKey kvs =
733− withParaPropM (pStyleM sty) $ blocksToOpenXML opts bs
734+blockToOpenXML opts (Div (_,_,kvs) bs)
735+ | Just sty <- lookup dynamicStyleKey kvs = do
736+ modify $ \s -> s{stDynamicParaProps = sty : (stDynamicParaProps s)}
737+ withParaPropM (pStyleM sty) $ blocksToOpenXML opts bs
734738blockToOpenXML opts (Div (_,["references"],_) bs) = do
735739 let (hs, bs') = span isHeaderBlock bs
736740 header <- blocksToOpenXML opts hs