From 71e0c206c169c12e30bec4869dd04e166ef7ed5d Mon Sep 17 00:00:00 2001 From: John MacFarlane <jgm@berkeley.edu> Date: Thu, 9 Aug 2012 19:11:19 -0700 Subject: [PATCH] Added getReader, getWriter to Text.Pandoc. --- src/Text/Pandoc.hs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/Text/Pandoc.hs b/src/Text/Pandoc.hs index 6a019bc3f..06bfd128f 100644 --- a/src/Text/Pandoc.hs +++ b/src/Text/Pandoc.hs @@ -100,6 +100,8 @@ module Text.Pandoc -- * Version , pandocVersion -- * Miscellaneous + , getReader + , getWriter , rtfEmbedImage , jsonFilter , ToJsonFilter(..) @@ -222,6 +224,35 @@ writers = [ ,("asciidoc" , PureStringWriter writeAsciiDoc) ] +getReader :: String -> Either String (ReaderOptions -> String -> Pandoc) +getReader s = + case parseFormatSpec s of + Left e -> Left $ show e + Right (readerName, setExts) -> + case lookup readerName readers of + Nothing -> Left $ "Unknown reader: " ++ readerName + Just r -> Right $ \o -> + r o{ readerExtensions = setExts $ + readerExtensions o } + +-- | Retrieve writer based on formatSpec (format+extensions). +getWriter :: String -> Either String Writer +getWriter s = + case parseFormatSpec s of + Left e -> Left $ show e + Right (writerName, setExts) -> + case lookup writerName writers of + Nothing -> Left $ "Unknown writer: " ++ writerName + Just (PureStringWriter r) -> Right $ PureStringWriter $ + \o -> r o{ writerExtensions = setExts $ + writerExtensions o } + Just (IOStringWriter r) -> Right $ IOStringWriter $ + \o -> r o{ writerExtensions = setExts $ + writerExtensions o } + Just (IOByteStringWriter r) -> Right $ IOByteStringWriter $ + \o -> r o{ writerExtensions = setExts $ + writerExtensions o } + {-# DEPRECATED jsonFilter "Use toJsonFilter instead" #-} -- | Converts a transformation on the Pandoc AST into a function -- that reads and writes a JSON-encoded string. This is useful