lib: cleanup up megaparsec 6 compat module, simplify error type (#594)
This commit is contained in:
parent
d7d5f8a064
commit
ecfc8224dd
@ -1,3 +1,6 @@
|
|||||||
|
-- ^ Paper over some differences between megaparsec 5 and 6,
|
||||||
|
-- making it possible to write code that supports both.
|
||||||
|
|
||||||
{-# LANGUAGE CPP, FlexibleContexts #-}
|
{-# LANGUAGE CPP, FlexibleContexts #-}
|
||||||
|
|
||||||
module Text.Megaparsec.Compat
|
module Text.Megaparsec.Compat
|
||||||
@ -24,7 +27,20 @@ import Data.List.NonEmpty (fromList)
|
|||||||
import Data.Void (Void)
|
import Data.Void (Void)
|
||||||
|
|
||||||
-- | A basic parse error type.
|
-- | A basic parse error type.
|
||||||
type MPErr = ErrorFancy Void
|
type MPErr = Void
|
||||||
|
|
||||||
|
-- | Make a simple parse error.
|
||||||
|
mpMkParseError :: FilePath -> String -> ParseError Char String
|
||||||
|
mpMkParseError f s = FancyError (fromList [initialPos f]) (S.singleton $ ErrorFail s)
|
||||||
|
|
||||||
|
-- | Make a Pos. With a negative argument, throws InvalidPosException (megaparsec >= 6)
|
||||||
|
-- or calls error (megaparsec < 6).
|
||||||
|
mpMkPos :: Int -> Pos
|
||||||
|
mpMkPos = mkPos
|
||||||
|
|
||||||
|
-- | Unmake a Pos.
|
||||||
|
mpUnPos :: Pos -> Int
|
||||||
|
mpUnPos = unPos
|
||||||
|
|
||||||
-- | Parse and return some Text.
|
-- | Parse and return some Text.
|
||||||
mptext :: MonadParsec e Text m => Tokens Text -> m (Tokens Text)
|
mptext :: MonadParsec e Text m => Tokens Text -> m (Tokens Text)
|
||||||
@ -34,33 +50,24 @@ mptext = string
|
|||||||
|
|
||||||
import Text.Megaparsec.Prim (MonadParsec)
|
import Text.Megaparsec.Prim (MonadParsec)
|
||||||
|
|
||||||
|
-- | A basic parse error type.
|
||||||
type MPErr = Dec
|
type MPErr = Dec
|
||||||
|
|
||||||
|
-- | Make a simple parse error.
|
||||||
|
mpMkParseError :: FilePath -> String -> ParseError Char String
|
||||||
|
mpMkParseError f s = (mempty :: ParseError Char String){errorCustom = S.singleton $ f ++ ": " ++ s}
|
||||||
|
|
||||||
|
-- | Make a Pos. With a negative argument, throws InvalidPosException (megaparsec >= 6)
|
||||||
|
-- or calls error (megaparsec < 6).
|
||||||
|
mpMkPos :: Int -> Pos
|
||||||
|
mpMkPos = unsafePos . fromIntegral
|
||||||
|
|
||||||
|
-- | Unmake a Pos.
|
||||||
|
mpUnPos :: Pos -> Int
|
||||||
|
mpUnPos = fromIntegral . unPos
|
||||||
|
|
||||||
|
-- | Parse and return some Text.
|
||||||
mptext :: MonadParsec e Text m => Text -> m Text
|
mptext :: MonadParsec e Text m => Text -> m Text
|
||||||
mptext = fmap pack . string . unpack
|
mptext = fmap pack . string . unpack
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mpMkPos :: Int -> Pos
|
|
||||||
mpMkPos =
|
|
||||||
#if MIN_VERSION_megaparsec(6,0,0)
|
|
||||||
mkPos
|
|
||||||
#else
|
|
||||||
unsafePos . fromIntegral
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mpUnPos :: Pos -> Int
|
|
||||||
mpUnPos =
|
|
||||||
#if MIN_VERSION_megaparsec(6,0,0)
|
|
||||||
unPos
|
|
||||||
#else
|
|
||||||
fromIntegral . unPos
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mpMkParseError :: FilePath -> String -> ParseError Char String
|
|
||||||
mpMkParseError f s =
|
|
||||||
#if MIN_VERSION_megaparsec(6,0,0)
|
|
||||||
FancyError (fromList [initialPos f]) (S.singleton $ ErrorFail s)
|
|
||||||
#else
|
|
||||||
(mempty :: ParseError Char String){errorCustom = S.singleton $ f ++ ": " ++ s}
|
|
||||||
#endif
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user