Ignore-this: 788eb99b3948ce201769471919562114 The contract for the "encodeable" function says, in part, "If it yields False, encodeChar must throw an exception.". This patch makes the ASCII encoding instance throw an exception for non-ASCII characters. darcs-hash:20100909222914-76d51-76d9891ae18f13751b004e2b6ed24401192ae79f
21 lines
590 B
Haskell
21 lines
590 B
Haskell
{-# LANGUAGE DeriveDataTypeable #-}
|
|
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' |