encoding/Data/Encoding/ASCII.hs
Henning Guenther 5b02009636 Removed dependence on Data.ByteString.Internal
darcs-hash:20071105215225-a4fee-c0b55a368ffc296c7c784156f8340cb4586f1444
2007-11-05 13:52:25 -08:00

30 lines
918 B
Haskell

-- | ASCII (American Standard Code for Information Interchange) is the
-- \"normal\" computer encoding using the byte values 0-127 to represent
-- characters. Refer to <http://en.wikipedia.org/wiki/ASCII> for
-- more informations.
module Data.Encoding.ASCII
(ASCII(..)) where
import Control.Exception (throwDyn)
import Data.ByteString (pack)
import qualified Data.ByteString.Lazy as Lazy (pack)
import Data.ByteString.Char8 (unpack)
import Data.Char (ord)
import qualified Data.ByteString.Lazy as Lazy
import Data.Encoding.Base
import Data.Word
data ASCII = ASCII deriving Show
charToASCII :: Char -> Word8
charToASCII ch = if ch < '\128'
then fromIntegral $ ord ch
else throwDyn (HasNoRepresentation ch)
instance Encoding ASCII where
encode _ str = pack (map charToASCII str)
encodeLazy _ str = Lazy.pack (map charToASCII str)
encodable _ ch = ch < '\128'
decode _ = unpack
decodable _ = const True