git.iko.soy/typeable/pandoc
on master help sign in
Generalize parseFromString to any streams with Char token
6f6e4c0Alexander Krotov
src/Text/Pandoc/Parsing.hs+5−4
@@ -206,6 +206,7 @@ import Data.List (intercalate, isSuffixOf, transpose)
206import qualified Data.Map as M
206import qualified Data.Map as M
207import Data.Maybe (mapMaybe, fromMaybe)
207import Data.Maybe (mapMaybe, fromMaybe)
208import qualified Data.Set as Set
208import qualified Data.Set as Set
209+import Data.String
209import Data.Text (Text)
210import Data.Text (Text)
210import Text.HTML.TagSoup.Entity (lookupEntity)
211import Text.HTML.TagSoup.Entity (lookupEntity)
211import Text.Pandoc.Asciify (toAsciiChar)
212import Text.Pandoc.Asciify (toAsciiChar)
@@ -458,15 +459,15 @@ stringAnyCase (x:xs) = do
458 return (firstChar:rest)
459 return (firstChar:rest)
459
460
460-- | Parse contents of 'str' using 'parser' and return result.
461-- | Parse contents of 'str' using 'parser' and return result.
461−parseFromString :: Monad m
462+parseFromString :: (Monad m, Stream s m Char, IsString s)
462− => ParserT [Char] st m a
463+ => ParserT s st m r
463 -> String
464 -> String
464− -> ParserT [Char] st m a
465+ -> ParserT s st m r
465parseFromString parser str = do
466parseFromString parser str = do
466 oldPos <- getPosition
467 oldPos <- getPosition
467 setPosition $ initialPos "chunk"
468 setPosition $ initialPos "chunk"
468 oldInput <- getInput
469 oldInput <- getInput
469− setInput str
470+ setInput $ fromString str
470 result <- parser
471 result <- parser
471 spaces
472 spaces
472 eof
473 eof