aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2010-07-13 20:44:56 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2010-07-13 20:44:56 -0700
commit9b833e874457d41914d097f1c7cb4b1da636fb4c (patch)
tree1a97d036a04cbc180e07383673fc4abf7c54ccbb /src/Text/Pandoc
parenta59a14190686ceab44e8dd2ccb7d061f281f929f (diff)
downloadpandoc-9b833e874457d41914d097f1c7cb4b1da636fb4c.tar.gz
Added a slidy writer.
Resolves Issue #122.
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r--src/Text/Pandoc/Shared.hs15
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs16
2 files changed, 22 insertions, 9 deletions
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index 025b54b93..ac1cf7373 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -66,6 +66,7 @@ module Text.Pandoc.Shared (
-- * Writer options
HTMLMathMethod (..),
ObfuscationMethod (..),
+ HTMLSlideVariant (..),
WriterOptions (..),
defaultWriterOptions,
-- * File handling
@@ -466,6 +467,12 @@ data ObfuscationMethod = NoObfuscation
| JavascriptObfuscation
deriving (Show, Read, Eq)
+-- | Varieties of HTML slide shows.
+data HTMLSlideVariant = S5Slides
+ | SlidySlides
+ | NoSlides
+ deriving (Show, Read, Eq)
+
-- | Options for writers
data WriterOptions = WriterOptions
{ writerStandalone :: Bool -- ^ Include header and footer
@@ -474,11 +481,11 @@ data WriterOptions = WriterOptions
, writerEPUBMetadata :: String -- ^ Metadata to include in EPUB
, writerTabStop :: Int -- ^ Tabstop for conversion btw spaces and tabs
, writerTableOfContents :: Bool -- ^ Include table of contents
- , writerS5 :: Bool -- ^ We're writing S5
+ , writerSlideVariant :: HTMLSlideVariant -- ^ Are we writing S5 or Slidy?
+ , writerIncremental :: Bool -- ^ True if lists should be incremental
, writerXeTeX :: Bool -- ^ Create latex suitable for use by xetex
, writerHTMLMathMethod :: HTMLMathMethod -- ^ How to print math in HTML
, writerIgnoreNotes :: Bool -- ^ Ignore footnotes (used in making toc)
- , writerIncremental :: Bool -- ^ Incremental S5 lists
, writerNumberSections :: Bool -- ^ Number sections in LaTeX
, writerStrictMarkdown :: Bool -- ^ Use strict markdown syntax
, writerReferenceLinks :: Bool -- ^ Use reference links in writing markdown, rst
@@ -499,11 +506,11 @@ defaultWriterOptions =
, writerEPUBMetadata = ""
, writerTabStop = 4
, writerTableOfContents = False
- , writerS5 = False
+ , writerSlideVariant = NoSlides
+ , writerIncremental = False
, writerXeTeX = False
, writerHTMLMathMethod = PlainMath
, writerIgnoreNotes = False
- , writerIncremental = False
, writerNumberSections = False
, writerStrictMarkdown = False
, writerReferenceLinks = False
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index 08cd18ad0..cd03a51b5 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -197,10 +197,16 @@ elementToHtml opts (Sec level num id' title' elements) = do
innerContents <- mapM (elementToHtml opts) elements
modify $ \st -> st{stSecNum = num} -- update section number
header' <- blockToHtml opts (Header level title')
- return $ if writerS5 opts || (writerStrictMarkdown opts && not (writerTableOfContents opts))
- -- S5 gets confused by the extra divs around sections
- then toHtmlFromList (header' : innerContents)
- else thediv ! [prefixedId opts id'] << (header' : innerContents)
+ let stuff = header' : innerContents
+ return $ case writerSlideVariant opts of
+ SlidySlides | level == 1 ->
+ thediv ! [prefixedId opts id', theclass "slide"] << stuff
+ S5Slides -> toHtmlFromList stuff
+ -- S5 gets confused by the extra divs around sections
+ _ | (writerStrictMarkdown opts &&
+ not (writerTableOfContents opts)) ->
+ toHtmlFromList stuff
+ _ -> thediv ! [prefixedId opts id'] << stuff
-- | Convert list of Note blocks to a footnote <div>.
-- Assumes notes are sorted.
@@ -296,7 +302,7 @@ blockToHtml opts (BlockQuote blocks) =
-- in S5, treat list in blockquote specially
-- if default is incremental, make it nonincremental;
-- otherwise incremental
- if writerS5 opts
+ if writerSlideVariant opts /= NoSlides
then let inc = not (writerIncremental opts) in
case blocks of
[BulletList lst] -> blockToHtml (opts {writerIncremental = inc})