Fixed markdown writer to use templates.
git-svn-id: https://pandoc.googlecode.com/svn/trunk@1696 788f1e2b-df1e-0410-8736-df70ead52e1b
This commit is contained in:
parent
858f728d43
commit
359f110974
2 changed files with 44 additions and 25 deletions
|
@ -31,6 +31,7 @@ Markdown: <http://daringfireball.net/projects/markdown/>
|
|||
-}
|
||||
module Text.Pandoc.Writers.Markdown ( writeMarkdown) where
|
||||
import Text.Pandoc.Definition
|
||||
import Text.Pandoc.Templates
|
||||
import Text.Pandoc.Shared
|
||||
import Text.Pandoc.Blocks
|
||||
import Text.ParserCombinators.Parsec ( parse, GenParser )
|
||||
|
@ -45,33 +46,36 @@ type WriterState = (Notes, Refs)
|
|||
-- | Convert Pandoc to Markdown.
|
||||
writeMarkdown :: WriterOptions -> Pandoc -> String
|
||||
writeMarkdown opts document =
|
||||
render $ evalState (pandocToMarkdown opts document) ([],[])
|
||||
evalState (pandocToMarkdown opts document) ([],[])
|
||||
|
||||
-- | Return markdown representation of document.
|
||||
pandocToMarkdown :: WriterOptions -> Pandoc -> State WriterState Doc
|
||||
pandocToMarkdown :: WriterOptions -> Pandoc -> State WriterState String
|
||||
pandocToMarkdown opts (Pandoc meta blocks) = do
|
||||
return empty -- TODO
|
||||
-- let before = writerIncludeBefore opts
|
||||
-- let after = writerIncludeAfter opts
|
||||
-- let header = writerHeader opts
|
||||
-- let before' = if null before then empty else text before
|
||||
-- let after' = if null after then empty else text after
|
||||
-- let header' = if null header then empty else text header
|
||||
-- metaBlock <- metaToMarkdown opts meta
|
||||
-- let head' = if writerStandalone opts
|
||||
-- then metaBlock $+$ header'
|
||||
-- else empty
|
||||
-- let headerBlocks = filter isHeaderBlock blocks
|
||||
-- let toc = if writerTableOfContents opts
|
||||
-- then tableOfContents opts headerBlocks
|
||||
-- else empty
|
||||
-- body <- blockListToMarkdown opts blocks
|
||||
-- (notes, _) <- get
|
||||
-- notes' <- notesToMarkdown opts (reverse notes)
|
||||
-- (_, refs) <- get -- note that the notes may contain refs
|
||||
-- refs' <- keyTableToMarkdown opts (reverse refs)
|
||||
-- return $ head' $+$ before' $+$ toc $+$ body $+$ text "" $+$
|
||||
-- notes' $+$ text "" $+$ refs' $+$ after'
|
||||
metaBlock <- metaToMarkdown opts meta
|
||||
let head' = if writerStandalone opts
|
||||
then metaBlock
|
||||
else empty
|
||||
let headerBlocks = filter isHeaderBlock blocks
|
||||
let toc = if writerTableOfContents opts
|
||||
then tableOfContents opts headerBlocks
|
||||
else empty
|
||||
body <- blockListToMarkdown opts blocks
|
||||
(notes, _) <- get
|
||||
notes' <- notesToMarkdown opts (reverse notes)
|
||||
(_, refs) <- get -- note that the notes may contain refs
|
||||
refs' <- keyTableToMarkdown opts (reverse refs)
|
||||
let context = writerVariables opts ++
|
||||
[ ("toc", render toc)
|
||||
, ("body", render $ body $+$ text "" $+$ notes' $+$
|
||||
text "" $+$ refs')
|
||||
, ("titleblock", render head')
|
||||
]
|
||||
let templ = if writerStandalone opts
|
||||
then writerTemplate opts
|
||||
else "$if(toc)$$toc$\n$endif$" ++
|
||||
"$if(before)$$before$\n$endif$" ++
|
||||
"$body$$if(after)$$after$\n$endif$"
|
||||
return $ renderTemplate context templ
|
||||
|
||||
-- | Return markdown representation of reference key table.
|
||||
keyTableToMarkdown :: WriterOptions -> KeyTable -> State WriterState Doc
|
||||
|
|
|
@ -1 +1,16 @@
|
|||
TODO
|
||||
$if(titleblock)$
|
||||
$titleblock$
|
||||
$endif$
|
||||
$if(header-includes)$
|
||||
$header-includes$
|
||||
$endif$
|
||||
$if(before)$
|
||||
$before$
|
||||
$endif$
|
||||
$if(toc)$
|
||||
$toc$
|
||||
$endif$
|
||||
$body$
|
||||
$if(after)$
|
||||
$after$
|
||||
$endif$
|
||||
|
|
Loading…
Add table
Reference in a new issue