diff options
-rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 44 | ||||
-rw-r--r-- | tests/s5.basic.html | 4 | ||||
-rw-r--r-- | tests/s5.fancy.html | 4 |
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> |