aboutsummaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2020-01-07 10:11:46 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2020-01-07 10:11:46 -0800
commit2a67b7aea9e9d70e67c0def21da78abf4ec590a1 (patch)
treeacbd4c8840583ca22287f5d212cd58daa6309644 /src/Text
parentd4651b3a5b2e31b22bf80adbe44964e09da41f9b (diff)
downloadpandoc-2a67b7aea9e9d70e67c0def21da78abf4ec590a1.tar.gz
Reveal.js writer: restore old behavior for 2D nesting.
The fix to #6030 actually changed behavior, so that the 2D nesting occurred at slide level N-1 and N, instead of at the top-level section. This commit restores the 2.7.3 behavior. If there are more than 2 levels, the top level is horizontal and the rest are collapsed to vertical. Closes #6032.
Diffstat (limited to 'src/Text')
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index 095d55c0e..b739e2b2d 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -80,6 +80,7 @@ data WriterState = WriterState
, stEPUBVersion :: Maybe EPUBVersion -- ^ EPUB version if for epub
, stSlideVariant :: HTMLSlideVariant
, stSlideLevel :: Int -- ^ Slide level
+ , stInSection :: Bool -- ^ Content is in a section (revealjs)
, stCodeBlockNum :: Int -- ^ Number of code block
}
@@ -90,6 +91,7 @@ defaultWriterState = WriterState {stNotes= [], stMath = False, stQuotes = False,
stEPUBVersion = Nothing,
stSlideVariant = NoSlides,
stSlideLevel = 1,
+ stInSection = False,
stCodeBlockNum = 0}
-- Helpers to render HTML with the appropriate function.
@@ -662,8 +664,6 @@ blockToHtml opts (Div (ident, "section":dclasses, dkvs)
else case splitBy isPause xs of
[] -> ([],[])
(z:zs) -> ([],z ++ concatMap inDiv zs)
- titleContents <- blockListToHtml opts titleBlocks
- innerContents <- blockListToHtml opts innerSecs
let classes' = ordNub $
["title-slide" | titleSlide] ++ ["slide" | slide] ++
["section" | (slide || writerSectionDivs opts) &&
@@ -674,20 +674,26 @@ blockToHtml opts (Div (ident, "section":dclasses, dkvs)
then H5.section
else H.div
let attr = (ident, classes', dkvs)
+ titleContents <- blockListToHtml opts titleBlocks
+ inSection <- gets stInSection
+ innerContents <- do
+ modify $ \st -> st{ stInSection = True }
+ res <- blockListToHtml opts innerSecs
+ modify $ \st -> st{ stInSection = inSection }
+ return res
if titleSlide
then do
t <- addAttrs opts attr $
secttag $ nl opts <> header' <> nl opts <> titleContents <> nl opts
+ -- ensure 2D nesting for revealjs, but only for one level;
+ -- revealjs doesn't like more than one level of nesting
return $
- -- ensure 2D nesting for revealjs, but only for one level;
- -- revealjs doesn't like more than one level of nseting
- (if slideVariant == RevealJsSlides && not (null innerSecs) &&
- level == slideLevel - 1
- then \z -> H5.section (nl opts <> z)
- else id) $ t <> nl opts <>
- if null innerSecs
- then mempty
- else innerContents <> nl opts
+ if slideVariant == RevealJsSlides && not inSection &&
+ not (null innerSecs)
+ then H5.section (nl opts <> t <> nl opts <> innerContents)
+ else t <> nl opts <> if null innerSecs
+ then mempty
+ else innerContents <> nl opts
else if writerSectionDivs opts || slide ||
(hident /= ident && not (T.null hident || T.null ident)) ||
(hclasses /= dclasses) || (hkvs /= dkvs)