aboutsummaryrefslogtreecommitdiff
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
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.
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs28
-rw-r--r--test/command/6030.md20
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>
```
```