encoding/Data/Encoding/CP1255.hs
Henning Guenther e849ef1404 More documentation for encodings
darcs-hash:20080115224955-a4fee-339ceea9439723fa09096abab221f2ad735c8905
2008-01-15 14:49:55 -08:00

36 lines
1.0 KiB
Haskell

{-# LANGUAGE CPP,TemplateHaskell,DeriveDataTypeable #-}
{- | This module implements Windows Codepage number 1255 which encodes the hebrew language.
See <http://en.wikipedia.org/wiki/CP1255> for more information.
-}
module Data.Encoding.CP1255
(CP1255(..)) where
import Data.Array ((!),Array)
import Data.Word (Word8)
import Data.ByteString (all)
import Data.Map (Map,lookup,member)
import Data.Encoding.Base
import Prelude hiding (lookup,all)
import Control.Exception (throwDyn)
import Data.Typeable
data CP1255 = CP1255 deriving (Eq,Show,Typeable)
instance Encoding CP1255 where
encode _ = encodeSinglebyte (\c -> case lookup c encodeMap of
Just v -> v
Nothing -> throwDyn (HasNoRepresentation c))
encodable _ c = member c encodeMap
decode _ = decodeSinglebyte (decodeArr!)
decodable _ = all (\w -> decodeArr!w /= '\xFFFD')
decodeArr :: Array Word8 Char
#ifndef __HADDOCK__
decodeArr = $(decodingArray "CP1255.TXT")
#endif
encodeMap :: Map Char Word8
#ifndef __HADDOCK__
encodeMap = $(encodingMap "CP1255.TXT")
#endif