git.iko.soy/typeable/pandoc
on master help sign in
Shared: Changed type of Element.
5330e63John MacFarlane
src/Text/Pandoc/Shared.hs+4−4
@@ -413,8 +413,8 @@ isPara _ = False
413
413
414-- | Data structure for defining hierarchical Pandoc documents
414-- | Data structure for defining hierarchical Pandoc documents
415data Element = Blk Block
415data Element = Blk Block
416− | Sec Int [Int] String [Inline] [Element]
416+ | Sec Int [Int] Attr [Inline] [Element]
417− -- lvl num ident label contents
417+ -- lvl num attributes label contents
418 deriving (Eq, Read, Show, Typeable, Data)
418 deriving (Eq, Read, Show, Typeable, Data)
419
419
420-- | Convert Pandoc inline list to plain text identifier. HTML
420-- | Convert Pandoc inline list to plain text identifier. HTML
@@ -435,7 +435,7 @@ hierarchicalize blocks = S.evalState (hierarchicalizeWithIds blocks) []
435
435
436hierarchicalizeWithIds :: [Block] -> S.State [Int] [Element]
436hierarchicalizeWithIds :: [Block] -> S.State [Int] [Element]
437hierarchicalizeWithIds [] = return []
437hierarchicalizeWithIds [] = return []
438−hierarchicalizeWithIds ((Header level (ident,_,_) title'):xs) = do
438+hierarchicalizeWithIds ((Header level attr title'):xs) = do
439 lastnum <- S.get
439 lastnum <- S.get
440 let lastnum' = take level lastnum
440 let lastnum' = take level lastnum
441 let newnum = if length lastnum' >= level
441 let newnum = if length lastnum' >= level
@@ -445,7 +445,7 @@ hierarchicalizeWithIds ((Header level (ident,_,_) title'):xs) = do
445 let (sectionContents, rest) = break (headerLtEq level) xs
445 let (sectionContents, rest) = break (headerLtEq level) xs
446 sectionContents' <- hierarchicalizeWithIds sectionContents
446 sectionContents' <- hierarchicalizeWithIds sectionContents
447 rest' <- hierarchicalizeWithIds rest
447 rest' <- hierarchicalizeWithIds rest
448− return $ Sec level newnum ident title' sectionContents' : rest'
448+ return $ Sec level newnum attr title' sectionContents' : rest'
449hierarchicalizeWithIds (x:rest) = do
449hierarchicalizeWithIds (x:rest) = do
450 rest' <- hierarchicalizeWithIds rest
450 rest' <- hierarchicalizeWithIds rest
451 return $ (Blk x) : rest'
451 return $ (Blk x) : rest'
src/Text/Pandoc/Writers/ConTeXt.hs+1−1
@@ -121,7 +121,7 @@ stringToConTeXt opts = concatMap (escapeCharForConTeXt opts)
121-- | Convert Elements to ConTeXt
121-- | Convert Elements to ConTeXt
122elementToConTeXt :: WriterOptions -> Element -> State WriterState Doc
122elementToConTeXt :: WriterOptions -> Element -> State WriterState Doc
123elementToConTeXt _ (Blk block) = blockToConTeXt block
123elementToConTeXt _ (Blk block) = blockToConTeXt block
124−elementToConTeXt opts (Sec level _ id' title' elements) = do
124+elementToConTeXt opts (Sec level _ (id',_,_) title' elements) = do
125 header' <- sectionHeader id' level title'
125 header' <- sectionHeader id' level title'
126 innerContents <- mapM (elementToConTeXt opts) elements
126 innerContents <- mapM (elementToConTeXt opts) elements
127 return $ vcat (header' : innerContents)
127 return $ vcat (header' : innerContents)
src/Text/Pandoc/Writers/Docbook.hs+1−1
@@ -94,7 +94,7 @@ writeDocbook opts (Pandoc (Meta tit auths dat) blocks) =
94-- | Convert an Element to Docbook.
94-- | Convert an Element to Docbook.
95elementToDocbook :: WriterOptions -> Int -> Element -> Doc
95elementToDocbook :: WriterOptions -> Int -> Element -> Doc
96elementToDocbook opts _ (Blk block) = blockToDocbook opts block
96elementToDocbook opts _ (Blk block) = blockToDocbook opts block
97−elementToDocbook opts lvl (Sec _ _num id' title elements) =
97+elementToDocbook opts lvl (Sec _ _num (id',_,_) title elements) =
98 -- Docbook doesn't allow sections with no content, so insert some if needed
98 -- Docbook doesn't allow sections with no content, so insert some if needed
99 let elements' = if null elements
99 let elements' = if null elements
100 then [Blk (Para [])]
100 then [Blk (Para [])]
src/Text/Pandoc/Writers/EPUB.hs+1−1
@@ -230,7 +230,7 @@ writeEPUB opts doc@(Pandoc meta _) = do
230
230
231 let navPointNode :: (Int -> String -> String -> [Element] -> Element)
231 let navPointNode :: (Int -> String -> String -> [Element] -> Element)
232 -> Shared.Element -> State Int Element
232 -> Shared.Element -> State Int Element
233− navPointNode formatter (Sec _ nums ident ils children) = do
233+ navPointNode formatter (Sec _ nums (ident,classes,keyvals) ils children) = do
234 n <- get
234 n <- get
235 modify (+1)
235 modify (+1)
236 let showNums :: [Int] -> String
236 let showNums :: [Int] -> String
src/Text/Pandoc/Writers/HTML.hs+2−2
@@ -250,7 +250,7 @@ showSecNum = concat . intersperse "." . map show
250-- | Converts an Element to a list item for a table of contents,
250-- | Converts an Element to a list item for a table of contents,
251-- retrieving the appropriate identifier from state.
251-- retrieving the appropriate identifier from state.
252elementToListItem :: WriterOptions -> Element -> State WriterState (Maybe Html)
252elementToListItem :: WriterOptions -> Element -> State WriterState (Maybe Html)
253−elementToListItem opts (Sec lev num id' headerText subsecs)
253+elementToListItem opts (Sec lev num (id',classes,keyvals) headerText subsecs)
254 | lev <= writerTOCDepth opts = do
254 | lev <= writerTOCDepth opts = do
255 let sectnum = if writerNumberSections opts
255 let sectnum = if writerNumberSections opts
256 then (H.span ! A.class_ "toc-section-number" $ toHtml $ showSecNum num) >>
256 then (H.span ! A.class_ "toc-section-number" $ toHtml $ showSecNum num) >>
@@ -271,7 +271,7 @@ elementToListItem _ _ = return Nothing
271-- | Convert an Element to Html.
271-- | Convert an Element to Html.
272elementToHtml :: Int -> WriterOptions -> Element -> State WriterState Html
272elementToHtml :: Int -> WriterOptions -> Element -> State WriterState Html
273elementToHtml _slideLevel opts (Blk block) = blockToHtml opts block
273elementToHtml _slideLevel opts (Blk block) = blockToHtml opts block
274−elementToHtml slideLevel opts (Sec level num id' title' elements) = do
274+elementToHtml slideLevel opts (Sec level num (id',classes,keyvals) title' elements) = do
275 let slide = writerSlideVariant opts /= NoSlides && level <= slideLevel
275 let slide = writerSlideVariant opts /= NoSlides && level <= slideLevel
276 modify $ \st -> st{stSecNum = num} -- update section number
276 modify $ \st -> st{stSecNum = num} -- update section number
277 -- always use level 1 for slide titles
277 -- always use level 1 for slide titles
src/Text/Pandoc/Writers/LaTeX.hs+2−2
@@ -171,7 +171,7 @@ pandocToLaTeX options (Pandoc (Meta title authors date) blocks) = do
171-- | Convert Elements to LaTeX
171-- | Convert Elements to LaTeX
172elementToLaTeX :: WriterOptions -> Element -> State WriterState Doc
172elementToLaTeX :: WriterOptions -> Element -> State WriterState Doc
173elementToLaTeX _ (Blk block) = blockToLaTeX block
173elementToLaTeX _ (Blk block) = blockToLaTeX block
174−elementToLaTeX opts (Sec level _ id' title' elements) = do
174+elementToLaTeX opts (Sec level _ (id',_,_) title' elements) = do
175 header' <- sectionHeader id' level title'
175 header' <- sectionHeader id' level title'
176 innerContents <- mapM (elementToLaTeX opts) elements
176 innerContents <- mapM (elementToLaTeX opts) elements
177 return $ vsep (header' : innerContents)
177 return $ vsep (header' : innerContents)
@@ -236,7 +236,7 @@ toSlides bs = do
236
236
237elementToBeamer :: Int -> Element -> State WriterState [Block]
237elementToBeamer :: Int -> Element -> State WriterState [Block]
238elementToBeamer _slideLevel (Blk b) = return [b]
238elementToBeamer _slideLevel (Blk b) = return [b]
239−elementToBeamer slideLevel (Sec lvl _num ident tit elts)
239+elementToBeamer slideLevel (Sec lvl _num (ident,_,_) tit elts)
240 | lvl > slideLevel = do
240 | lvl > slideLevel = do
241 bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts
241 bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts
242 return $ Para ( RawInline "latex" "\\begin{block}{"
242 return $ Para ( RawInline "latex" "\\begin{block}{"