aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc.hs31
1 files changed, 31 insertions, 0 deletions
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