encoding 0.5.1 → 0.5.2
raw patch · 4 files changed
+42/−30 lines, 4 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Data.Encoding: encodingFromStringExplicit :: String -> Maybe DynEncoding
+ Data.Encoding.CP1250: decoding_map_CP1250 :: Map Char Word8
+ Data.Encoding.CP1250: encoding_arr_CP1250 :: UArray Word8 Int
+ Data.Encoding.CP1251: decoding_map_CP1251 :: Map Char Word8
+ Data.Encoding.CP1251: encoding_arr_CP1251 :: UArray Word8 Int
+ Data.Encoding.CP1252: decoding_map_CP1252 :: Map Char Word8
+ Data.Encoding.CP1252: encoding_arr_CP1252 :: UArray Word8 Int
+ Data.Encoding.CP1253: decoding_map_CP1253 :: Map Char Word8
+ Data.Encoding.CP1253: encoding_arr_CP1253 :: UArray Word8 Int
+ Data.Encoding.CP1254: decoding_map_CP1254 :: Map Char Word8
+ Data.Encoding.CP1254: encoding_arr_CP1254 :: UArray Word8 Int
+ Data.Encoding.CP1255: decoding_map_CP1255 :: Map Char Word8
+ Data.Encoding.CP1255: encoding_arr_CP1255 :: UArray Word8 Int
+ Data.Encoding.CP1256: decoding_map_CP1256 :: Map Char Word8
+ Data.Encoding.CP1256: encoding_arr_CP1256 :: UArray Word8 Int
+ Data.Encoding.CP1257: decoding_map_CP1257 :: Map Char Word8
+ Data.Encoding.CP1257: encoding_arr_CP1257 :: UArray Word8 Int
+ Data.Encoding.CP1258: decoding_map_CP1258 :: Map Char Word8
+ Data.Encoding.CP1258: encoding_arr_CP1258 :: UArray Word8 Int
+ Data.Encoding.ISO885910: decoding_map_ISO885910 :: Map Char Word8
+ Data.Encoding.ISO885910: encoding_arr_ISO885910 :: UArray Word8 Int
+ Data.Encoding.ISO885911: decoding_map_ISO885911 :: Map Char Word8
+ Data.Encoding.ISO885911: encoding_arr_ISO885911 :: UArray Word8 Int
+ Data.Encoding.ISO885913: decoding_map_ISO885913 :: Map Char Word8
+ Data.Encoding.ISO885913: encoding_arr_ISO885913 :: UArray Word8 Int
+ Data.Encoding.ISO885914: decoding_map_ISO885914 :: Map Char Word8
+ Data.Encoding.ISO885914: encoding_arr_ISO885914 :: UArray Word8 Int
+ Data.Encoding.ISO885915: decoding_map_ISO885915 :: Map Char Word8
+ Data.Encoding.ISO885915: encoding_arr_ISO885915 :: UArray Word8 Int
+ Data.Encoding.ISO885916: decoding_map_ISO885916 :: Map Char Word8
+ Data.Encoding.ISO885916: encoding_arr_ISO885916 :: UArray Word8 Int
+ Data.Encoding.ISO88592: decoding_map_ISO88592 :: Map Char Word8
+ Data.Encoding.ISO88592: encoding_arr_ISO88592 :: UArray Word8 Int
+ Data.Encoding.ISO88593: decoding_map_ISO88593 :: Map Char Word8
+ Data.Encoding.ISO88593: encoding_arr_ISO88593 :: UArray Word8 Int
+ Data.Encoding.ISO88594: decoding_map_ISO88594 :: Map Char Word8
+ Data.Encoding.ISO88594: encoding_arr_ISO88594 :: UArray Word8 Int
+ Data.Encoding.ISO88595: decoding_map_ISO88595 :: Map Char Word8
+ Data.Encoding.ISO88595: encoding_arr_ISO88595 :: UArray Word8 Int
+ Data.Encoding.ISO88596: decoding_map_ISO88596 :: Map Char Word8
+ Data.Encoding.ISO88596: encoding_arr_ISO88596 :: UArray Word8 Int
+ Data.Encoding.ISO88597: decoding_map_ISO88597 :: Map Char Word8
+ Data.Encoding.ISO88597: encoding_arr_ISO88597 :: UArray Word8 Int
+ Data.Encoding.ISO88598: decoding_map_ISO88598 :: Map Char Word8
+ Data.Encoding.ISO88598: encoding_arr_ISO88598 :: UArray Word8 Int
+ Data.Encoding.ISO88599: decoding_map_ISO88599 :: Map Char Word8
+ Data.Encoding.ISO88599: encoding_arr_ISO88599 :: UArray Word8 Int
+ Data.Encoding.JISX0201: decoding_map_JISX0201 :: Map Char Word8
+ Data.Encoding.JISX0201: encoding_arr_JISX0201 :: UArray Word8 Int
+ Data.Encoding.JISX0208: decoding_map_JISX0208 :: Map Char (Word8, Word8)
+ Data.Encoding.JISX0208: encoding_arr_JISX0208 :: UArray (Word8, Word8) Int
+ Data.Encoding.JISX0212: decoding_map_JISX0212 :: Map Char (Word8, Word8)
+ Data.Encoding.JISX0212: encoding_arr_JISX0212 :: UArray (Word8, Word8) Int
+ Data.Encoding.MacOSRoman: decoding_map_MacOSRoman :: Map Char Word8
+ Data.Encoding.MacOSRoman: encoding_arr_MacOSRoman :: UArray Word8 Int
Files
- Data/Encoding.hs +4/−3
- Data/Encoding/Helper/Template.hs +32/−25
- NEWS +4/−0
- encoding.cabal +2/−2
Data/Encoding.hs view
@@ -19,6 +19,7 @@ ,decodeStrictByteString ,decodeStrictByteStringExplicit ,encodingFromString+ ,encodingFromStringExplicit ) where @@ -125,8 +126,8 @@ decodeStrictByteStringExplicit e str = evalStateT (decode e) str -- | Like 'encodingFromString' but returns 'Nothing' instead of throwing an error-encodingFromStringMaybe :: String -> Maybe DynEncoding-encodingFromStringMaybe codeName = case (normalizeEncoding codeName) of+encodingFromStringExplicit :: String -> Maybe DynEncoding+encodingFromStringExplicit codeName = case (normalizeEncoding codeName) of -- ASCII "ascii" -> Just $ DynEncoding ASCII "646" -> Just $ DynEncoding ASCII@@ -321,4 +322,4 @@ encodingFromString str = maybe (error $ "Data.Encoding.encodingFromString: Unknown encoding: "++show str) id- (encodingFromStringMaybe str)+ (encodingFromStringExplicit str)
Data/Encoding/Helper/Template.hs view
@@ -1,33 +1,40 @@ {-# LANGUAGE TemplateHaskell #-}-module Data.Encoding.Helper.Template where+module Data.Encoding.Helper.Template+ (makeISOInstance+ ,makeJISInstance)+ where import Data.Encoding.Base import Data.Bits import Data.Char import Data.Maybe (mapMaybe)-import Data.Map as Map (fromList,lookup)+import Data.Map as Map (Map,fromList,lookup) import Data.Array.Unboxed import Data.Typeable+import Data.Word (Word8) import Language.Haskell.TH makeISOInstance :: String -> FilePath -> Q [Dec] makeISOInstance name file = do trans <- runIO (readTranslation 0 id file)- mp <- encodingMap (validTranslations trans)- arr <- decodingArray (fillTranslations 0 255 trans)- return $ encodingInstance 'encodeWithMap 'decodeWithArray 'encodeableWithMap name mp arr+ let mp = encodingMap (validTranslations trans)+ let arr = decodingArray (fillTranslations 0 255 trans)+ return $ encodingInstance (ConT ''Word8) 'encodeWithMap 'decodeWithArray 'encodeableWithMap name mp arr makeJISInstance :: Int -> String -> FilePath -> Q [Dec] makeJISInstance offset name file = do trans <- runIO (readTranslation offset (\src -> (src `shiftR` 8,src .&. 0xFF)) file)- mp <- encodingMap2 (validTranslations trans)- arr <- decodingArray2 (fillTranslations (0x21,0x21) (0x7E,0x7E) trans)- return $ encodingInstance 'encodeWithMap2 'decodeWithArray2 'encodeableWithMap name mp arr+ let mp = encodingMap2 (validTranslations trans)+ let arr = decodingArray2 (fillTranslations (0x21,0x21) (0x7E,0x7E) trans)+ return $ encodingInstance ((TupleT 2) `AppT` (ConT ''Word8) `AppT` (ConT ''Word8)) 'encodeWithMap2 'decodeWithArray2 'encodeableWithMap name mp arr -encodingInstance :: Name -> Name -> Name -> String -> Exp -> Exp -> [Dec]-encodingInstance enc dec able name mp arr+encodingInstance :: Type -> Name -> Name -> Name -> String -> Exp -> Exp -> [Dec]+encodingInstance tp enc dec able name mp arr = [ DataD [] rname [] [NormalC rname []] [''Show,''Eq,''Typeable]+ , SigD rmp (((ConT ''Map.Map) `AppT` (ConT ''Char)) `AppT` tp) , ValD (VarP rmp) (NormalB mp) []+ , SigD rarr ((ConT ''UArray) `AppT` tp `AppT` (ConT ''Int))+ , ValD (VarP rarr) (NormalB arr) [] , InstanceD [] (AppT (ConT ''Encoding) (ConT rname)) [FunD 'encodeChar [Clause [WildP] (NormalB $ AppE (VarE enc) (VarE rmp))@@ -35,7 +42,7 @@ ] ,FunD 'decodeChar [Clause [WildP] (NormalB $ AppE (VarE dec) (VarE rarr))- [ValD (VarP rarr) (NormalB arr) []]+ [] ] ,FunD 'encodeable [Clause [WildP] (NormalB $ AppE (VarE able) (VarE rmp))@@ -45,15 +52,15 @@ ] where rname = mkName name- rarr = mkName "arr"+ rarr = mkName ("encoding_arr_"++name) rmp = mkName ("decoding_map_"++name) -createCharArray :: [(Integer,Maybe Char)] -> Integer -> Integer -> Q Exp+createCharArray :: [(Integer,Maybe Char)] -> Integer -> Integer -> Exp createCharArray lst f t = createArray (map (\(x,y) -> (LitE $ IntegerL x,mbCharToExp y) ) lst) (LitE $ IntegerL f) (LitE $ IntegerL t) -createCharArray2 :: [((Integer,Integer),Maybe Char)] -> (Integer,Integer) -> (Integer,Integer) -> Q Exp+createCharArray2 :: [((Integer,Integer),Maybe Char)] -> (Integer,Integer) -> (Integer,Integer) -> Exp createCharArray2 lst (f1,f2) (t1,t2) = createArray (map (\((x1,x2),y) -> (TupE [integerExp x1,integerExp x2],mbCharToExp y)@@ -61,35 +68,35 @@ (TupE [integerExp f1,integerExp f2]) (TupE [integerExp t1,integerExp t2]) -integerExp :: Integer -> Exp-integerExp i = LitE $ IntegerL i- mbCharToExp :: Maybe Char -> Exp mbCharToExp Nothing = LitE (IntegerL (-1)) mbCharToExp (Just c) = LitE (IntegerL $ fromIntegral $ ord c) -createArray :: [(Exp,Exp)] -> Exp -> Exp -> Q Exp+integerExp :: Integer -> Exp+integerExp i = LitE $ IntegerL i++createArray :: [(Exp,Exp)] -> Exp -> Exp -> Exp createArray lst from to- = return $ AppE+ = AppE (AppE (VarE 'array) (TupE [from,to])) (ListE [TupE [x,y] | (x,y) <- lst]) -decodingArray :: [(Integer,Maybe Char)] -> Q Exp+decodingArray :: [(Integer,Maybe Char)] -> Exp decodingArray trans = createCharArray trans 0 255 -decodingArray2 :: [((Integer,Integer),Maybe Char)] -> Q Exp+decodingArray2 :: [((Integer,Integer),Maybe Char)] -> Exp decodingArray2 trans = createCharArray2 trans (0x21,0x21) (0x7E,0x7E) -encodingMap :: [(Integer,Char)] -> Q Exp-encodingMap trans = return $ AppE+encodingMap :: [(Integer,Char)] -> Exp+encodingMap trans = AppE (VarE 'fromList) (ListE [ TupE [LitE $ CharL to,LitE $ IntegerL from] | (from,to) <- trans]) -encodingMap2 :: [((Integer,Integer),Char)] -> Q Exp-encodingMap2 trans = return $ AppE+encodingMap2 :: [((Integer,Integer),Char)] -> Exp+encodingMap2 trans = AppE (VarE 'fromList) (ListE [ TupE [LitE $ CharL to,TupE [integerExp f1,integerExp f2]] | ((f1,f2),to) <- trans])
NEWS view
@@ -1,3 +1,7 @@+Changes from 0.5 to 0.5.2+-------------------------++* Export function encodingFromStringExplicit Changes from 0.4 to 0.5 -----------------------
encoding.cabal view
@@ -1,5 +1,5 @@ Name: encoding-Version: 0.5.1+Version: 0.5.2 Author: Henning Günther Maintainer: h.guenther@tu-bs.de License: BSD3@@ -47,7 +47,7 @@ Library if flag(splitBase)- Build-Depends: bytestring, base >= 3, binary, mtl, containers, extensible-exceptions, array, template-haskell, regex-compat+ Build-Depends: bytestring, base >= 3 && < 5, binary, mtl, containers, extensible-exceptions, array, template-haskell, regex-compat else Build-Depends: base < 3, binary, extensible-exceptions, template-haskell