encoding/Data/Encoding/ASCII.hs
Henning Guenther 96738efeeb Documentation for a few encodings
darcs-hash:20070802095455-a4fee-8761245eb32db2cc33a80d981eaebab10c2af6a3
2007-08-02 02:54:55 -07:00

30 lines
900 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.ByteString.Base (c2w)
import qualified Data.ByteString.Lazy as Lazy
import Data.Encoding.Base
import Data.Word
data ASCII = ASCII
charToASCII :: Char -> Word8
charToASCII ch = if ch < '\128'
then c2w 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