23 lines
479 B
Haskell
23 lines
479 B
Haskell
module Data.Encoding.ISO88591
|
|
(ISO88591(..)
|
|
) where
|
|
|
|
import Data.Encoding.Base
|
|
import Data.ByteString.Base(c2w,w2c)
|
|
import Data.Char(ord,chr)
|
|
import Data.Word
|
|
import Control.Exception
|
|
|
|
data ISO88591 = ISO88591
|
|
|
|
enc :: Char -> Word8
|
|
enc c = if ord c < 256
|
|
then c2w c
|
|
else throwDyn (HasNoRepresentation c)
|
|
|
|
instance Encoding ISO88591 where
|
|
encode _ = encodeSinglebyte enc
|
|
encodeLazy _ = encodeSinglebyteLazy enc
|
|
encodable _ c = ord c < 256
|
|
decode _ = decodeSinglebyte w2c
|