aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs44
-rw-r--r--tests/s5.basic.html4
-rw-r--r--tests/s5.fancy.html4
3 files changed, 22 insertions, 30 deletions
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index 25904e93f..6bc911fbd 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -106,18 +106,17 @@ pandocToHtml opts (Pandoc (Meta title' authors' date') blocks) = do
date <- if standalone
then inlineListToHtml opts date'
else return noHtml
+ let splitHrule (HorizontalRule : Header 1 xs : ys)
+ = Header 1 xs : splitHrule ys
+ splitHrule (HorizontalRule : xs) = Header 1 [] : splitHrule xs
+ splitHrule (x : xs) = x : splitHrule xs
+ splitHrule [] = []
+ let ensureStartWithH1 bs@(Header 1 _:_) = bs
+ ensureStartWithH1 bs = Header 1 [] : bs
let sects = hierarchicalize $
if writerSlideVariant opts == NoSlides
then blocks
- else case blocks of
- (Header 1 _ : _) -> blocks
- _ ->
- let isL1 (Header 1 _) = True
- isL1 _ = False
- (preBlocks, rest) = break isL1 blocks
- in (RawBlock "html" "<div class=\"slide\">" :
- preBlocks) ++ (RawBlock "html" "</div>" :
- rest)
+ else ensureStartWithH1 $ splitHrule blocks
toc <- if writerTableOfContents opts
then tableOfContents opts sects
else return Nothing
@@ -226,13 +225,6 @@ elementToListItem opts (Sec _ num id' headerText subsecs) = do
-- | Convert an Element to Html.
elementToHtml :: WriterOptions -> Element -> State WriterState Html
-elementToHtml opts (Blk HorizontalRule)
- | writerSlideVariant opts == S5Slides ||
- writerSlideVariant opts == SlidySlides =
- return $ primHtml "</div>" +++ nl opts +++ primHtml "<div class=\"slide\">"
-elementToHtml opts (Blk HorizontalRule)
- | writerSlideVariant opts == DZSlides =
- return $ primHtml "</section>" +++ nl opts +++ primHtml "<section>"
elementToHtml opts (Blk block) = blockToHtml opts block
elementToHtml opts (Sec level num id' title' elements) = do
modify $ \st -> st{stSecNum = num} -- update section number
@@ -244,17 +236,17 @@ elementToHtml opts (Sec level num id' title' elements) = do
writerSlideVariant opts == S5Slides)]
let stuff = header'' : innerContents
let slide = writerSlideVariant opts /= NoSlides && level == 1
- let stuff' = if (writerSlideVariant opts == S5Slides ||
- writerSlideVariant opts == SlidySlides) && level == 1
- then [thediv ! [theclass "slide"] <<
- (nl opts : intersperse (nl opts) stuff ++ [nl opts])]
- else intersperse (nl opts) stuff
- let inNl x = nl opts : x ++ [nl opts]
- return $ if writerSectionDivs opts || writerSlideVariant opts == DZSlides
+ let titleSlide = slide && null elements
+ let classes = [theclass "titleslide" | titleSlide] ++
+ [theclass "slide" | slide]
+ let inNl x = nl opts : intersperse (nl opts) x ++ [nl opts]
+ return $ if writerSectionDivs opts || slide
then if writerHtml5 opts
- then tag "section" ! [prefixedId opts id'] << inNl stuff'
- else thediv ! [prefixedId opts id'] << inNl stuff'
- else toHtmlFromList stuff'
+ then tag "section" ! (prefixedId opts id' : classes)
+ << inNl stuff
+ else thediv ! (prefixedId opts id' : classes)
+ << inNl stuff
+ else toHtmlFromList $ intersperse (nl opts) stuff
-- | Convert list of Note blocks to a footnote <div>.
-- Assumes notes are sorted.
diff --git a/tests/s5.basic.html b/tests/s5.basic.html
index 0658dcf4b..88ac22631 100644
--- a/tests/s5.basic.html
+++ b/tests/s5.basic.html
@@ -34,14 +34,14 @@
<h3>Sam Smith<br/>Jen Jones</h3>
<h4>July 15, 2006</h4>
</div>
-<div class="slide">
+<div id="first-slide" class="slide">
<h1>First slide</h1>
<ul>
<li>first bullet</li>
<li>second bullet</li>
</ul>
</div>
-<div class="slide">
+<div id="math" class="slide">
<h1>Math</h1>
<ul>
<li><span class="math">$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$</span></li>
diff --git a/tests/s5.fancy.html b/tests/s5.fancy.html
index 39188bb1e..0e10ae0b0 100644
--- a/tests/s5.fancy.html
+++ b/tests/s5.fancy.html
@@ -235,14 +235,14 @@
<h3>Sam Smith<br/>Jen Jones</h3>
<h4>July 15, 2006</h4>
</div>
-<div class="slide">
+<div id="first-slide" class="slide">
<h1>First slide</h1>
<ul class="incremental">
<li>first bullet</li>
<li>second bullet</li>
</ul>
</div>
-<div class="slide">
+<div id="math" class="slide">
<h1>Math</h1>
<ul class="incremental">
<li><span class="LaTeX">$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$</span></li>