git.iko.soy/typeable/pandoc
on master help sign in
Shared: Changed type of Element.

Sec now includes a field for Attr rather than just String (the identifier). Note, this is an API change.

commit5330e6342135789ade52165ecb31c20c0e98b67c authorJohn MacFarlane <fiddlosopher@gmail.com> dateTue 12 Feb 2013, 20:13 (14 years ago) parenta49ecc9
6 files changed+11−11
src/Text/Pandoc/Shared.hs+4−4 src/Text/Pandoc/Writers/ConTeXt.hs+1−1 src/Text/Pandoc/Writers/Docbook.hs+1−1 src/Text/Pandoc/Writers/EPUB.hs+1−1 src/Text/Pandoc/Writers/HTML.hs+2−2 src/Text/Pandoc/Writers/LaTeX.hs+2−2
src/Text/Pandoc/Shared.hs+4−4
@@ -413,8 +413,8 @@ isPara _ = False
413413
414414-- | Data structure for defining hierarchical Pandoc documents
415415data Element = Blk Block
416− | Sec Int [Int] String [Inline] [Element]
417− -- lvl num ident label contents
416+ | Sec Int [Int] Attr [Inline] [Element]
417+ -- lvl num attributes label contents
418418 deriving (Eq, Read, Show, Typeable, Data)
419419
420420-- | Convert Pandoc inline list to plain text identifier. HTML
@@ -435,7 +435,7 @@ hierarchicalize blocks = S.evalState (hierarchicalizeWithIds blocks) []
435435
436436hierarchicalizeWithIds :: [Block] -> S.State [Int] [Element]
437437hierarchicalizeWithIds [] = return []
438−hierarchicalizeWithIds ((Header level (ident,_,_) title'):xs) = do
438+hierarchicalizeWithIds ((Header level attr title'):xs) = do
439439 lastnum <- S.get
440440 let lastnum' = take level lastnum
441441 let newnum = if length lastnum' >= level
@@ -445,7 +445,7 @@ hierarchicalizeWithIds ((Header level (ident,_,_) title'):xs) = do
445445 let (sectionContents, rest) = break (headerLtEq level) xs
446446 sectionContents' <- hierarchicalizeWithIds sectionContents
447447 rest' <- hierarchicalizeWithIds rest
448− return $ Sec level newnum ident title' sectionContents' : rest'
448+ return $ Sec level newnum attr title' sectionContents' : rest'
449449hierarchicalizeWithIds (x:rest) = do
450450 rest' <- hierarchicalizeWithIds rest
451451 return $ (Blk x) : rest'
src/Text/Pandoc/Writers/ConTeXt.hs+1−1
@@ -121,7 +121,7 @@ stringToConTeXt opts = concatMap (escapeCharForConTeXt opts)
121121-- | Convert Elements to ConTeXt
122122elementToConTeXt :: WriterOptions -> Element -> State WriterState Doc
123123elementToConTeXt _ (Blk block) = blockToConTeXt block
124−elementToConTeXt opts (Sec level _ id' title' elements) = do
124+elementToConTeXt opts (Sec level _ (id',_,_) title' elements) = do
125125 header' <- sectionHeader id' level title'
126126 innerContents <- mapM (elementToConTeXt opts) elements
127127 return $ vcat (header' : innerContents)
src/Text/Pandoc/Writers/Docbook.hs+1−1
@@ -94,7 +94,7 @@ writeDocbook opts (Pandoc (Meta tit auths dat) blocks) =
9494-- | Convert an Element to Docbook.
9595elementToDocbook :: WriterOptions -> Int -> Element -> Doc
9696elementToDocbook opts _ (Blk block) = blockToDocbook opts block
97−elementToDocbook opts lvl (Sec _ _num id' title elements) =
97+elementToDocbook opts lvl (Sec _ _num (id',_,_) title elements) =
9898 -- Docbook doesn't allow sections with no content, so insert some if needed
9999 let elements' = if null elements
100100 then [Blk (Para [])]
src/Text/Pandoc/Writers/EPUB.hs+1−1
@@ -230,7 +230,7 @@ writeEPUB opts doc@(Pandoc meta _) = do
230230
231231 let navPointNode :: (Int -> String -> String -> [Element] -> Element)
232232 -> 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
234234 n <- get
235235 modify (+1)
236236 let showNums :: [Int] -> String
src/Text/Pandoc/Writers/HTML.hs+2−2
@@ -250,7 +250,7 @@ showSecNum = concat . intersperse "." . map show
250250-- | Converts an Element to a list item for a table of contents,
251251-- retrieving the appropriate identifier from state.
252252elementToListItem :: 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)
254254 | lev <= writerTOCDepth opts = do
255255 let sectnum = if writerNumberSections opts
256256 then (H.span ! A.class_ "toc-section-number" $ toHtml $ showSecNum num) >>
@@ -271,7 +271,7 @@ elementToListItem _ _ = return Nothing
271271-- | Convert an Element to Html.
272272elementToHtml :: Int -> WriterOptions -> Element -> State WriterState Html
273273elementToHtml _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
275275 let slide = writerSlideVariant opts /= NoSlides && level <= slideLevel
276276 modify $ \st -> st{stSecNum = num} -- update section number
277277 -- 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
171171-- | Convert Elements to LaTeX
172172elementToLaTeX :: WriterOptions -> Element -> State WriterState Doc
173173elementToLaTeX _ (Blk block) = blockToLaTeX block
174−elementToLaTeX opts (Sec level _ id' title' elements) = do
174+elementToLaTeX opts (Sec level _ (id',_,_) title' elements) = do
175175 header' <- sectionHeader id' level title'
176176 innerContents <- mapM (elementToLaTeX opts) elements
177177 return $ vsep (header' : innerContents)
@@ -236,7 +236,7 @@ toSlides bs = do
236236
237237elementToBeamer :: Int -> Element -> State WriterState [Block]
238238elementToBeamer _slideLevel (Blk b) = return [b]
239−elementToBeamer slideLevel (Sec lvl _num ident tit elts)
239+elementToBeamer slideLevel (Sec lvl _num (ident,_,_) tit elts)
240240 | lvl > slideLevel = do
241241 bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts
242242 return $ Para ( RawInline "latex" "\\begin{block}{"