module Data.Encoding.ASCII where
import Control.Throws
import Data.Char
import Data.Encoding.Base
import Data.Encoding.ByteSource
import Data.Encoding.ByteSink
import Data.Encoding.Exception
import Data.Typeable
data ASCII = ASCII deriving (Show,Eq,Typeable)
instance Encoding ASCII where
decodeChar _ = do
w <- fetchWord8
return $ chr $ fromIntegral w
encodeChar enc c
| encodeable enc c = pushWord8 . fromIntegral . ord $ c
| otherwise = throwException . HasNoRepresentation $ c
encodeable _ c = c < '\128'