diff options
author | fiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> | 2009-12-31 01:10:57 +0000 |
---|---|---|
committer | fiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> | 2009-12-31 01:10:57 +0000 |
commit | ecbf3388d4bf00649a47d11360be1065a67ff0b3 (patch) | |
tree | 6d4ba7bcb3c83cb18478678e4b47675f5b0008eb | |
parent | 2b1c01059974bbfdfc50f26c4e3c815742385de1 (diff) | |
download | pandoc-ecbf3388d4bf00649a47d11360be1065a67ff0b3.tar.gz |
Use Text.Pandoc.Templates instead of Text.Pandoc.DefaultTemplates.
(in pandoc.hs and Text.Pandoc)
git-svn-id: https://pandoc.googlecode.com/svn/trunk@1689 788f1e2b-df1e-0410-8736-df70ead52e1b
-rw-r--r-- | src/Text/Pandoc.hs | 6 | ||||
-rw-r--r-- | src/Text/Pandoc/Templates.hs | 7 | ||||
-rw-r--r-- | src/pandoc.hs | 60 |
3 files changed, 41 insertions, 32 deletions
diff --git a/src/Text/Pandoc.hs b/src/Text/Pandoc.hs index fedb4102a..88c425978 100644 --- a/src/Text/Pandoc.hs +++ b/src/Text/Pandoc.hs @@ -88,8 +88,8 @@ module Text.Pandoc , WriterOptions (..) , HTMLMathMethod (..) , defaultWriterOptions - -- * Default headers for various output formats - , module Text.Pandoc.DefaultTemplates + -- * Rendering templates and default templates + , module Text.Pandoc.Templates -- * Version , pandocVersion ) where @@ -111,7 +111,7 @@ import Text.Pandoc.Writers.OpenDocument import Text.Pandoc.Writers.Man import Text.Pandoc.Writers.RTF import Text.Pandoc.Writers.MediaWiki -import Text.Pandoc.DefaultTemplates +import Text.Pandoc.Templates import Text.Pandoc.Shared import Data.Version (showVersion) import Paths_pandoc (version) diff --git a/src/Text/Pandoc/Templates.hs b/src/Text/Pandoc/Templates.hs index 887696159..98eed7292 100644 --- a/src/Text/Pandoc/Templates.hs +++ b/src/Text/Pandoc/Templates.hs @@ -57,11 +57,14 @@ import Paths_pandoc -- | Get the default template, either from the application's user data -- directory (~/.pandoc on unix) or from the cabal data directory. getDefaultTemplate :: String -> IO (Either E.IOException String) +getDefaultTemplate "native" = return $ Right "" +getDefaultTemplate "odt" = getDefaultTemplate "opendocument" getDefaultTemplate format = do - ut <- getTemplateFromUserDataDirectory format + let format' = takeWhile (/='+') format -- strip off "+lhs" if present + ut <- getTemplateFromUserDataDirectory format' case ut of Right t -> return $ Right t - Left _ -> getTemplateFromCabalDataDirectory format + Left _ -> getTemplateFromCabalDataDirectory format' getTemplateFromUserDataDirectory :: String -> IO (Either E.IOException String) getTemplateFromUserDataDirectory format = E.try $ do diff --git a/src/pandoc.hs b/src/pandoc.hs index 7511050fb..44d0b96e6 100644 --- a/src/pandoc.hs +++ b/src/pandoc.hs @@ -32,6 +32,7 @@ writers. module Main where import Text.Pandoc import Text.Pandoc.ODT +import Text.Pandoc.Templates (getDefaultTemplate) import Text.Pandoc.Shared ( HTMLMathMethod (..), tabFilter, ObfuscationMethod (..) ) #ifdef _HIGHLIGHTING import Text.Pandoc.Highlighting ( languages ) @@ -96,26 +97,26 @@ readers = [("native" , readPandoc) readPandoc :: ParserState -> String -> Pandoc readPandoc _ = read --- | Association list of formats and pairs of writers and default headers. -writers :: [ ( String, ( WriterOptions -> Pandoc -> String, String ) ) ] -writers = [("native" , (writeDoc, "")) - ,("html" , (writeHtmlString, "")) - ,("html+lhs" , (writeHtmlString, "")) - ,("s5" , (writeS5String, defaultS5Template)) - ,("docbook" , (writeDocbook, defaultDocbookTemplate)) - ,("opendocument" , (writeOpenDocument, defaultOpenDocumentTemplate)) - ,("odt" , (writeOpenDocument, defaultOpenDocumentTemplate)) - ,("latex" , (writeLaTeX, defaultLaTeXTemplate)) - ,("latex+lhs" , (writeLaTeX, defaultLaTeXTemplate)) - ,("context" , (writeConTeXt, defaultConTeXtTemplate)) - ,("texinfo" , (writeTexinfo, "")) - ,("man" , (writeMan, "")) - ,("markdown" , (writeMarkdown, "")) - ,("markdown+lhs" , (writeMarkdown, "")) - ,("rst" , (writeRST, "")) - ,("rst+lhs" , (writeRST, "")) - ,("mediawiki" , (writeMediaWiki, "")) - ,("rtf" , (writeRTF, defaultRTFTemplate)) +-- | Association list of formats and writers. +writers :: [ ( String, WriterOptions -> Pandoc -> String ) ] +writers = [("native" , writeDoc) + ,("html" , writeHtmlString) + ,("html+lhs" , writeHtmlString) + ,("s5" , writeS5String) + ,("docbook" , writeDocbook) + ,("opendocument" , writeOpenDocument) + ,("odt" , writeOpenDocument) + ,("latex" , writeLaTeX) + ,("latex+lhs" , writeLaTeX) + ,("context" , writeConTeXt) + ,("texinfo" , writeTexinfo) + ,("man" , writeMan) + ,("markdown" , writeMarkdown) + ,("markdown+lhs" , writeMarkdown) + ,("rst" , writeRST) + ,("rst+lhs" , writeRST) + ,("mediawiki" , writeMediaWiki) + ,("rtf" , writeRTF) ] isNonTextOutput :: String -> Bool @@ -427,10 +428,10 @@ options = , Option "D" ["print-default-template"] (ReqArg (\arg _ -> do - let template = case (lookup arg writers) of - Just (_, h) -> h - Nothing -> error ("Unknown reader: " ++ arg) - hPutStr stdout template + templ <- getDefaultTemplate arg + case templ of + Right t -> hPutStr stdout t + Left e -> error $ show e exitWith ExitSuccess) "FORMAT") "" -- "Print default template for FORMAT" @@ -610,9 +611,14 @@ main = do Just r -> return r Nothing -> error ("Unknown reader: " ++ readerName') - (writer, defaultTemplate) <- case (lookup writerName' writers) of - Just (w,h) -> return (w, h) - Nothing -> error ("Unknown writer: " ++ writerName') + writer <- case (lookup writerName' writers) of + Just r -> return r + Nothing -> error ("Unknown writer: " ++ writerName') + + templ <- getDefaultTemplate writerName' + let defaultTemplate = case templ of + Right t -> t + Left e -> error (show e) environment <- getEnvironment let columns = case lookup "COLUMNS" environment of |