From e8ad4ba43c7c187a5b6ee6025bc6039488d7f420 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Tue, 11 Jan 2011 20:37:06 -0800 Subject: Preliminary support for HTML5. + Added writerHtml5 writer option. + Added --html5 option. + Added support for lang in html tag (so you can do 'pandoc -s --V lang=en', for example). + Updated html template with conditionals for HTML5. + When HTML5 selected, use
tag around title in document, and use
tags instead of
s if --section-divs specified. --- src/Text/Pandoc/Shared.hs | 2 ++ src/Text/Pandoc/Writers/HTML.hs | 5 ++++- src/pandoc.hs | 11 ++++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index cc94cf635..f757f4479 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -481,6 +481,7 @@ data WriterOptions = WriterOptions , writerUserDataDir :: Maybe FilePath -- ^ Path of user data directory , writerCiteMethod :: CiteMethod -- ^ How to print cites , writerBiblioFiles :: [FilePath] -- ^ Biblio files to use for citations + , writerHtml5 :: Bool -- ^ Produce HTML5 } deriving Show -- | Default writer options. @@ -510,6 +511,7 @@ defaultWriterOptions = , writerUserDataDir = Nothing , writerCiteMethod = Citeproc , writerBiblioFiles = [] + , writerHtml5 = False } -- diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index b8da4bec0..c61387fa7 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -170,6 +170,7 @@ inTemplate opts tit auths date toc body' newvars = , ("pagetitle", topTitle') , ("title", renderHtmlFragment tit) , ("date", date') ] ++ + [ ("html5","true") | writerHtml5 opts ] ++ (case toc of Just t -> [ ("toc", renderHtmlFragment t)] Nothing -> []) ++ @@ -226,7 +227,9 @@ elementToHtml opts (Sec level num id' title' elements) = do return $ if slides -- S5 gets confused by the extra divs around sections then toHtmlFromList stuff else if writerSectionDivs opts - then thediv ! [prefixedId opts id'] << stuff + then if writerHtml5 opts + then tag "section" << stuff + else thediv ! [prefixedId opts id'] << stuff else toHtmlFromList stuff -- | Convert list of Note blocks to a footnote
. diff --git a/src/pandoc.hs b/src/pandoc.hs index 8811e6816..0e57f8eb7 100644 --- a/src/pandoc.hs +++ b/src/pandoc.hs @@ -102,6 +102,7 @@ data Opt = Opt , optOffline :: Bool -- ^ Make slideshow accessible offline , optXeTeX :: Bool -- ^ Format latex for xetex , optSmart :: Bool -- ^ Use smart typography + , optHtml5 :: Bool -- ^ Produce HTML5 in HTML , optHTMLMathMethod :: HTMLMathMethod -- ^ Method to print HTML math , optReferenceODT :: Maybe FilePath -- ^ Path of reference.odt , optEPUBStylesheet :: Maybe String -- ^ EPUB stylesheet @@ -142,6 +143,7 @@ defaultOpts = Opt , optOffline = False , optXeTeX = False , optSmart = False + , optHtml5 = False , optHTMLMathMethod = PlainMath , optReferenceODT = Nothing , optEPUBStylesheet = Nothing @@ -226,6 +228,11 @@ options = (\opt -> return opt { optSmart = True })) "" -- "Use smart quotes, dashes, and ellipses" + , Option "5" ["html5"] + (NoArg + (\opt -> return opt { optHtml5 = True })) + "" -- "Produce HTML5 in HTML output" + , Option "m" ["latexmathml", "asciimathml"] (OptArg (\arg opt -> @@ -629,6 +636,7 @@ main = do , optOffline = offline , optXeTeX = xetex , optSmart = smart + , optHtml5 = html5 , optHTMLMathMethod = mathMethod , optReferenceODT = referenceODT , optEPUBStylesheet = epubStylesheet @@ -771,7 +779,8 @@ main = do else obfuscationMethod, writerIdentifierPrefix = idPrefix, writerSourceDirectory = sourceDir, - writerUserDataDir = datadir } + writerUserDataDir = datadir, + writerHtml5 = html5 } when (isNonTextOutput writerName' && outputFile == "-") $ do UTF8.hPutStrLn stderr ("Error: Cannot write " ++ writerName ++ " output to stdout.\n" ++ -- cgit v1.2.3