git.iko.soy/typeable/attoparsec
on master help sign in
Add a parseOnly entry point, at Daniel Fischer's request
commit9330e6b85d6edf28bdec0de1c0e9c86e5858f8e0 authorBryan O'Sullivan <bos@serpentine.com> dateTue 15 Feb 2011, 12:05 (16 years ago) parent9587e4d
2 files changed+12
Data/Attoparsec.hs+1 Data/Attoparsec/Internal.hs+11
Data/Attoparsec.hs+1
@@ -28,6 +28,7 @@ module Data.Attoparsec
2828 -- * Running parsers
2929 , parse
3030 , feed
31+ , I.parseOnly
3132 , parseWith
3233 , parseTest
3334
Data/Attoparsec/Internal.hs+11
@@ -19,6 +19,7 @@ module Data.Attoparsec.Internal
1919
2020 -- * Running parsers
2121 , parse
22+ , parseOnly
2223
2324 -- * Combinators
2425 , (<?>)
@@ -560,12 +561,22 @@ infix 0 <?>
560561-- | Terminal failure continuation.
561562failK :: Failure a
562563failK i0 _a0 _m0 stack msg = Fail (unI i0) stack msg
564+{-# INLINE failK #-}
563565
564566-- | Terminal success continuation.
565567successK :: Success a a
566568successK i0 _a0 _m0 a = Done (unI i0) a
569+{-# INLINE successK #-}
567570
568571-- | Run a parser.
569572parse :: Parser a -> B.ByteString -> Result a
570573parse m s = runParser m (I s) (A B.empty) Incomplete failK successK
571574{-# INLINE parse #-}
575+
576+-- | Run a parser that cannot be resupplied via a 'Partial' result.
577+parseOnly :: Parser a -> B.ByteString -> Either String a
578+parseOnly m s = case runParser m (I s) (A B.empty) Complete failK successK of
579+ Fail _ _ err -> Left err
580+ Done _ a -> Right a
581+ _ -> error "parseOnly: impossible error!"
582+{-# INLINE parseOnly #-}