encoding/Data/Encoding/ISO88599.hs
Henning Guenther 971927c91f Made extensions explicit
darcs-hash:20071229003551-a4fee-f01193be732b8f3f5085232f922490cd5b48706a
2007-12-28 16:35:51 -08:00

30 lines
747 B
Haskell

{-# LANGUAGE CPP,TemplateHaskell #-}
module Data.Encoding.ISO88599
(ISO88599(..)) where
import Data.Array ((!),Array)
import Data.Word (Word8)
import Data.Map (Map,lookup,member)
import Data.Encoding.Base
import Prelude hiding (lookup)
import Control.Exception (throwDyn)
data ISO88599 = ISO88599 deriving Show
instance Encoding ISO88599 where
encode _ = encodeSinglebyte (\c -> case lookup c encodeMap of
Just v -> v
Nothing -> throwDyn (HasNoRepresentation c))
encodable _ c = member c encodeMap
decode _ = decodeSinglebyte (decodeArr!)
decodeArr :: Array Word8 Char
#ifndef __HADDOCK__
decodeArr = $(decodingArray "8859-9.TXT")
#endif
encodeMap :: Map Char Word8
#ifndef __HADDOCK__
encodeMap = $(encodingMap "8859-9.TXT")
#endif