30 lines
900 B
Haskell
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
|