diff options
author | John MacFarlane <jgm@berkeley.edu> | 2020-01-07 10:11:46 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2020-01-07 10:11:46 -0800 |
commit | 2a67b7aea9e9d70e67c0def21da78abf4ec590a1 (patch) | |
tree | acbd4c8840583ca22287f5d212cd58daa6309644 | |
parent | d4651b3a5b2e31b22bf80adbe44964e09da41f9b (diff) | |
download | pandoc-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.
-rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 28 | ||||
-rw-r--r-- | test/command/6030.md | 20 |
2 files changed, 36 insertions, 12 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) diff --git a/test/command/6030.md b/test/command/6030.md index 44a934a6a..e05bf6e7f 100644 --- a/test/command/6030.md +++ b/test/command/6030.md @@ -15,12 +15,20 @@ Three #### Four Four + +# New sec + +New sec + +## New sub + +New sub ^D +<section> <section id="one" class="title-slide slide level1"> <h1>One</h1> <p>One</p> </section> -<section> <section id="two" class="title-slide slide level2"> <h2>Two</h2> <p>Two</p> @@ -32,6 +40,16 @@ Four <p>Four</p> </section> </section> +<section> +<section id="new-sec" class="title-slide slide level1"> +<h1>New sec</h1> +<p>New sec</p> +</section> +<section id="new-sub" class="title-slide slide level2"> +<h2>New sub</h2> +<p>New sub</p> +</section> +</section> ``` ``` |