Adding parseFromFile and changing String by Filepath
authorBruno Baruffaldi <baruffaldibruno@gmail.com>
Mon, 25 Feb 2019 00:06:14 +0000 (21:06 -0300)
committerHerbert Valerio Riedel <hvr@gnu.org>
Tue, 2 Jul 2019 16:41:26 +0000 (18:41 +0200)
src/Text/Parsec/ByteString.hs
src/Text/Parsec/ByteString/Lazy.hs
src/Text/Parsec/String.hs
src/Text/Parsec/Text.hs
src/Text/Parsec/Text/Lazy.hs

index 61b6820..e65dee1 100644 (file)
@@ -36,7 +36,7 @@ type GenParser t st = Parsec C.ByteString st
 -- >                  Right xs  -> print (sum xs)
 -- >              }
 
-parseFromFile :: Parser a -> String -> IO (Either ParseError a)
+parseFromFile :: Parser a -> FilePath -> IO (Either ParseError a)
 parseFromFile p fname
     = do input <- C.readFile fname
          return (runP p () fname input)
index 0186c85..2a45781 100644 (file)
@@ -35,7 +35,8 @@ type GenParser t st = Parsec C.ByteString st
 -- >                  Left err  -> print err
 -- >                  Right xs  -> print (sum xs)
 -- >              }
-parseFromFile :: Parser a -> String -> IO (Either ParseError a)
+
+parseFromFile :: Parser a -> FilePath -> IO (Either ParseError a)
 parseFromFile p fname
     = do input <- C.readFile fname
          return (runP p () fname input)
index 2bd3b52..67efa53 100644 (file)
@@ -33,7 +33,7 @@ type GenParser tok st = Parsec [tok] st
 -- >                  Left err  -> print err
 -- >                  Right xs  -> print (sum xs)
 -- >              }
-parseFromFile :: Parser a -> String -> IO (Either ParseError a)
+parseFromFile :: Parser a -> FilePath -> IO (Either ParseError a)
 parseFromFile p fname
     = do input <- readFile fname
          return (runP p () fname input)
index e9e6105..35d11a3 100644 (file)
 -----------------------------------------------------------------------------
 
 module Text.Parsec.Text
-    ( Parser, GenParser
+    ( Parser, GenParser, parseFromFile
     ) where
 
 import qualified Data.Text as Text
 import Text.Parsec.Prim
+import Text.Parsec.Error
+import Data.Text.IO as T
 
 type Parser = Parsec Text.Text ()
 type GenParser st = Parsec Text.Text st
+
+-- | @parseFromFile p filePath@ runs a strict text parser @p@ on the
+-- input read from @filePath@ using 'Data.Text.IO.readFile'. Returns either a 'ParseError'
+-- ('Left') or a value of type @a@ ('Right').
+--
+-- >  main    = do{ result <- parseFromFile numbers "digits.txt"
+-- >              ; case result of
+-- >                  Left err  -> print err
+-- >                  Right xs  -> print (sum xs)
+-- >              }
+
+parseFromFile :: Parser a -> FilePath -> IO (Either ParseError a)
+parseFromFile p fname
+    = do input <- T.readFile fname
+         return (runP p () fname input)
index fabae87..50eb4e8 100644 (file)
 -----------------------------------------------------------------------------
 
 module Text.Parsec.Text.Lazy
-    ( Parser, GenParser
+    ( Parser, GenParser, parseFromFile
     ) where
 
 import qualified Data.Text.Lazy as Text
 import Text.Parsec.Prim
+import Text.Parsec.Error
+import Data.Text.Lazy.IO as TL
 
 type Parser = Parsec Text.Text ()
 type GenParser st = Parsec Text.Text st
+
+-- | @parseFromFile p filePath@ runs a strict text parser @p@ on the
+-- input read from @filePath@ using 'Data.Text.Lazy.IO.readFile'. Returns either a 'ParseError'
+-- ('Left') or a value of type @a@ ('Right').
+--
+-- >  main    = do{ result <- parseFromFile numbers "digits.txt"
+-- >              ; case result of
+-- >                  Left err  -> print err
+-- >                  Right xs  -> print (sum xs)
+-- >              }
+
+parseFromFile :: Parser a -> FilePath -> IO (Either ParseError a)
+parseFromFile p fname
+    = do input <- TL.readFile fname
+         return (runP p () fname input)