module Data.ByteString.Read
(
ReadFractional
, fractional
, double
, integral
, int
, signed
, module Data.ByteString.Read.DEPRECATED
) where
import Control.Applicative
import Control.Arrow
import Data.ByteString(ByteString)
import Data.ByteString.Unsafe
import qualified Data.ByteString as S
import Data.ByteString.Read.Class
import Data.ByteString.Read.Integral
import Data.ByteString.Read.Fractional
import Data.ByteString.Read.DEPRECATED
signed :: Num r => (ByteString -> Maybe (r, ByteString)) -> ByteString -> Maybe (r, ByteString)
signed f s
| S.null s = Nothing
| unsafeHead s == minus = first negate <$> f (unsafeTail s)
| unsafeHead s == plus = f (unsafeTail s)
| otherwise = f s
where
minus = 45
plus = 43