git.iko.soy/typeable/pandoc
on master help sign in
Readers: Changed StringReader -> TextReader.
d682215John MacFarlane
src/Text/Pandoc/Readers.hs+26−23
@@ -93,36 +93,38 @@ import Text.Pandoc.Shared (mapLeft)
93import Text.Parsec.Error
93import Text.Parsec.Error
94import qualified Text.Pandoc.UTF8 as UTF8
94import qualified Text.Pandoc.UTF8 as UTF8
95import qualified Data.ByteString.Lazy as BL
95import qualified Data.ByteString.Lazy as BL
96+import Data.Text (Text)
97+import qualified Data.Text.Lazy as TL
96
98
97−data Reader m = StringReader (ReaderOptions -> String -> m Pandoc)
99+data Reader m = TextReader (ReaderOptions -> Text -> m Pandoc)
98 | ByteStringReader (ReaderOptions -> BL.ByteString -> m Pandoc)
100 | ByteStringReader (ReaderOptions -> BL.ByteString -> m Pandoc)
99
101
100-- | Association list of formats and readers.
102-- | Association list of formats and readers.
101readers :: PandocMonad m => [(String, Reader m)]
103readers :: PandocMonad m => [(String, Reader m)]
102−readers = [ ("native" , StringReader readNative)
104+readers = [ ("native" , TextReader readNative)
103− ,("json" , StringReader $ \o s ->
105+ ,("json" , TextReader $ \o s ->
104 case readJSON o s of
106 case readJSON o s of
105 Right doc -> return doc
107 Right doc -> return doc
106 Left _ -> throwError $ PandocParseError "JSON parse error")
108 Left _ -> throwError $ PandocParseError "JSON parse error")
107− ,("markdown" , StringReader readMarkdown)
109+ ,("markdown" , TextReader readMarkdown)
108− ,("markdown_strict" , StringReader readMarkdown)
110+ ,("markdown_strict" , TextReader readMarkdown)
109− ,("markdown_phpextra" , StringReader readMarkdown)
111+ ,("markdown_phpextra" , TextReader readMarkdown)
110− ,("markdown_github" , StringReader readMarkdown)
112+ ,("markdown_github" , TextReader readMarkdown)
111− ,("markdown_mmd", StringReader readMarkdown)
113+ ,("markdown_mmd", TextReader readMarkdown)
112− ,("commonmark" , StringReader readCommonMark)
114+ ,("commonmark" , TextReader readCommonMark)
113− ,("rst" , StringReader readRST)
115+ ,("rst" , TextReader readRST)
114− ,("mediawiki" , StringReader readMediaWiki)
116+ ,("mediawiki" , TextReader readMediaWiki)
115− ,("docbook" , StringReader readDocBook)
117+ ,("docbook" , TextReader readDocBook)
116− ,("opml" , StringReader readOPML)
118+ ,("opml" , TextReader readOPML)
117− ,("org" , StringReader readOrg)
119+ ,("org" , TextReader readOrg)
118− ,("textile" , StringReader readTextile) -- TODO : textile+lhs
120+ ,("textile" , TextReader readTextile) -- TODO : textile+lhs
119− ,("html" , StringReader readHtml)
121+ ,("html" , TextReader readHtml)
120− ,("latex" , StringReader readLaTeX)
122+ ,("latex" , TextReader readLaTeX)
121− ,("haddock" , StringReader readHaddock)
123+ ,("haddock" , TextReader readHaddock)
122− ,("twiki" , StringReader readTWiki)
124+ ,("twiki" , TextReader readTWiki)
123 ,("docx" , ByteStringReader readDocx)
125 ,("docx" , ByteStringReader readDocx)
124 ,("odt" , ByteStringReader readOdt)
126 ,("odt" , ByteStringReader readOdt)
125− ,("t2t" , StringReader readTxt2Tags)
127+ ,("t2t" , TextReader readTxt2Tags)
126 ,("epub" , ByteStringReader readEPUB)
128 ,("epub" , ByteStringReader readEPUB)
127 ]
129 ]
128
130
@@ -134,7 +136,7 @@ getReader s =
134 Right (readerName, setExts) ->
136 Right (readerName, setExts) ->
135 case lookup readerName readers of
137 case lookup readerName readers of
136 Nothing -> Left $ "Unknown reader: " ++ readerName
138 Nothing -> Left $ "Unknown reader: " ++ readerName
137− Just (StringReader r) -> Right $ StringReader $ \o ->
139+ Just (TextReader r) -> Right $ TextReader $ \o ->
138 r o{ readerExtensions = setExts $
140 r o{ readerExtensions = setExts $
139 getDefaultExtensions readerName }
141 getDefaultExtensions readerName }
140 Just (ByteStringReader r) -> Right $ ByteStringReader $ \o ->
142 Just (ByteStringReader r) -> Right $ ByteStringReader $ \o ->
@@ -142,5 +144,6 @@ getReader s =
142 getDefaultExtensions readerName }
144 getDefaultExtensions readerName }
143
145
144-- | Read pandoc document from JSON format.
146-- | Read pandoc document from JSON format.
145−readJSON :: ReaderOptions -> String -> Either PandocError Pandoc
147+readJSON :: ReaderOptions -> Text -> Either PandocError Pandoc
148+readJSON _ =
146−readJSON _ = mapLeft PandocParseError . eitherDecode' . UTF8.fromStringLazy
149+ mapLeft PandocParseError . eitherDecode' . BL.fromStrict . UTF8.fromText