4 module Data.URI.Internal
10 import Control.Applicative
11 import Control.Exception.Base
12 import Control.Monad.Unicode
13 import Data.Ascii (Ascii)
14 import qualified Data.Ascii as A
16 import Data.Attoparsec.Char8
17 import Data.ByteString (ByteString)
18 import Prelude.Unicode
20 finishOff ∷ Parser α → Parser α
21 {-# INLINE finishOff #-}
22 finishOff = ((endOfInput *>) ∘ return =≪)
24 parseAttempt ∷ Exception e
29 {-# INLINEABLE parseAttempt #-}
31 = case parseOnly (finishOff p) bs of
33 Left e → Failure $ f e
35 parseAttempt' ∷ Parser α → Ascii → Attempt α
36 {-# INLINE parseAttempt' #-}
37 parseAttempt' = (∘ A.toByteString) ∘ parseAttempt StringException