@@ -93,36 +93,38 @@ import Text.Pandoc.Shared (mapLeft)
9393import Text.Parsec.Error
9494import qualified Text.Pandoc.UTF8 as UTF8
9595import qualified Data.ByteString.Lazy as BL
96+import Data.Text (Text)
97+import qualified Data.Text.Lazy as TL
9698
97−data Reader m = StringReader (ReaderOptions -> String -> m Pandoc)
99+data Reader m = TextReader (ReaderOptions -> Text -> m Pandoc)
98100 | ByteStringReader (ReaderOptions -> BL.ByteString -> m Pandoc)
99101
100102-- | Association list of formats and readers.
101103readers :: PandocMonad m => [(String, Reader m)]
102−readers = [ ("native" , StringReader readNative)
103− ,("json" , StringReader $ \o s ->
104+readers = [ ("native" , TextReader readNative)
105+ ,("json" , TextReader $ \o s ->
104106 case readJSON o s of
105107 Right doc -> return doc
106108 Left _ -> throwError $ PandocParseError "JSON parse error")
107− ,("markdown" , StringReader readMarkdown)
108− ,("markdown_strict" , StringReader readMarkdown)
109− ,("markdown_phpextra" , StringReader readMarkdown)
110− ,("markdown_github" , StringReader readMarkdown)
111− ,("markdown_mmd", StringReader readMarkdown)
112− ,("commonmark" , StringReader readCommonMark)
113− ,("rst" , StringReader readRST)
114− ,("mediawiki" , StringReader readMediaWiki)
115− ,("docbook" , StringReader readDocBook)
116− ,("opml" , StringReader readOPML)
117− ,("org" , StringReader readOrg)
118− ,("textile" , StringReader readTextile) -- TODO : textile+lhs
119− ,("html" , StringReader readHtml)
120− ,("latex" , StringReader readLaTeX)
121− ,("haddock" , StringReader readHaddock)
122− ,("twiki" , StringReader readTWiki)
109+ ,("markdown" , TextReader readMarkdown)
110+ ,("markdown_strict" , TextReader readMarkdown)
111+ ,("markdown_phpextra" , TextReader readMarkdown)
112+ ,("markdown_github" , TextReader readMarkdown)
113+ ,("markdown_mmd", TextReader readMarkdown)
114+ ,("commonmark" , TextReader readCommonMark)
115+ ,("rst" , TextReader readRST)
116+ ,("mediawiki" , TextReader readMediaWiki)
117+ ,("docbook" , TextReader readDocBook)
118+ ,("opml" , TextReader readOPML)
119+ ,("org" , TextReader readOrg)
120+ ,("textile" , TextReader readTextile) -- TODO : textile+lhs
121+ ,("html" , TextReader readHtml)
122+ ,("latex" , TextReader readLaTeX)
123+ ,("haddock" , TextReader readHaddock)
124+ ,("twiki" , TextReader readTWiki)
123125 ,("docx" , ByteStringReader readDocx)
124126 ,("odt" , ByteStringReader readOdt)
125− ,("t2t" , StringReader readTxt2Tags)
127+ ,("t2t" , TextReader readTxt2Tags)
126128 ,("epub" , ByteStringReader readEPUB)
127129 ]
128130
@@ -134,7 +136,7 @@ getReader s =
134136 Right (readerName, setExts) ->
135137 case lookup readerName readers of
136138 Nothing -> Left $ "Unknown reader: " ++ readerName
137− Just (StringReader r) -> Right $ StringReader $ \o ->
139+ Just (TextReader r) -> Right $ TextReader $ \o ->
138140 r o{ readerExtensions = setExts $
139141 getDefaultExtensions readerName }
140142 Just (ByteStringReader r) -> Right $ ByteStringReader $ \o ->
@@ -142,5 +144,6 @@ getReader s =
142144 getDefaultExtensions readerName }
143145
144146-- | Read pandoc document from JSON format.
145−readJSON :: ReaderOptions -> String -> Either PandocError Pandoc
146−readJSON _ = mapLeft PandocParseError . eitherDecode' . UTF8.fromStringLazy
147+readJSON :: ReaderOptions -> Text -> Either PandocError Pandoc
148+readJSON _ =
149+ mapLeft PandocParseError . eitherDecode' . BL.fromStrict . UTF8.fromText