module Parsimony.IO
( parseFile
, parseLargeFile
, parseBinaryFile
, parseLargeBinaryFile
, uparseFile
, uparseLargeFile
, uparseBinaryFile
, uparseLargeBinaryFile
) where
import Parsimony.Prim
import Parsimony.Error
import Parsimony.Combinator
import Parsimony.UserState
import qualified Data.ByteString as Strict
import qualified Data.ByteString.Lazy as Lazy
import qualified Data.Text as T
import qualified Data.Text.IO as T
import qualified Data.Text.Lazy as LT
import qualified Data.Text.Lazy.IO as LT
parseFile :: FilePath -> Parser T.Text a -> IO (Either ParseError a)
parseFile f p = parseSource p f `fmap` T.readFile f
parseLargeFile :: FilePath -> Parser LT.Text a -> IO (Either ParseError a)
parseLargeFile f p = parseSource p f `fmap` LT.readFile f
parseBinaryFile :: FilePath -> Parser Strict.ByteString a ->
IO (Either ParseError a)
parseBinaryFile f p = parseSource p f `fmap` Strict.readFile f
parseLargeBinaryFile :: FilePath -> Parser Lazy.ByteString a ->
IO (Either ParseError a)
parseLargeBinaryFile f p = parseSource p f `fmap` Lazy.readFile f
uparseFile :: FilePath -> ParserU u T.Text a -> u -> IO (Either ParseError a)
uparseFile f p u = uparseSource p u f `fmap` T.readFile f
uparseLargeFile :: FilePath -> ParserU u LT.Text a ->
u -> IO (Either ParseError a)
uparseLargeFile f p u = uparseSource p u f `fmap` LT.readFile f
uparseBinaryFile :: FilePath -> ParserU u Strict.ByteString a ->
u -> IO (Either ParseError a)
uparseBinaryFile f p u = uparseSource p u f `fmap` Strict.readFile f
uparseLargeBinaryFile :: FilePath -> ParserU u Lazy.ByteString a ->
u -> IO (Either ParseError a)
uparseLargeBinaryFile f p u = uparseSource p u f `fmap` Lazy.readFile f