packages feed

dataenc 0.9 → 0.10.1

raw patch · 8 files changed

+113/−73 lines, 8 files

Files

dataenc.cabal view
@@ -1,5 +1,5 @@ name: dataenc-version: 0.9+version: 0.10.1 license: LGPL license-file: COPYING.LESSER author: Magnus Therning
src/Codec/Binary/Base16.hs view
@@ -23,6 +23,7 @@ module Codec.Binary.Base16     ( encode     , decode+    , decode'     , chop     , unchop     ) where@@ -59,17 +60,21 @@     in map (encodeArray !) $ foldr (\ o l -> (splitOctet o) ++ l) [] os  -- {{{1 decode--- | Decode data.-decode :: String-    -> Maybe [Word8]-decode s = let+-- | Decode data (lazy).+decode' :: String+    -> [Maybe Word8]+decode' = let         dec [] = []-        dec (o1:o2:os) =-                    (o1 `shiftL` 4 .|. o2) : dec os+        dec (Just o1:Just o2:os) =+                    Just (o1 `shiftL` 4 .|. o2) : dec os+        dec _ = [Nothing]     in-        if (length s `mod` 2 == 0)-            then liftM dec $ sequence $ map (flip M.lookup decodeMap) s-            else Nothing+        dec . map (flip M.lookup decodeMap)++-- | Decode data (strict).+decode :: String+    -> Maybe [Word8]+decode = sequence . decode'  -- {{{1 chop -- | Chop up a string in parts.
src/Codec/Binary/Base32.hs view
@@ -23,6 +23,7 @@ module Codec.Binary.Base32     ( encode     , decode+    , decode'     , chop     , unchop     ) where@@ -99,38 +100,42 @@     in (foldr (\ i s -> (encodeArray ! i) : s) "" [i1, i2, i3, i4, i5, i6, i7, i8]) ++ (encode os)  -- {{{1 decode--- | Decode data.-decode :: String-    -> Maybe [Word8]-decode s = let+-- | Decode data (lazy).+decode' :: String+    -> [Maybe Word8]+decode' = let         dec [] = []-        dec [eo1, eo2] = [eo1 `shiftL` 3 .|. eo2 `shiftR` 2]-        dec [eo1, eo2, eo3, eo4] = let+        dec [Just eo1, Just eo2] = [Just (eo1 `shiftL` 3 .|. eo2 `shiftR` 2)]+        dec [Just eo1, Just eo2, Just eo3, Just eo4] = let                 o1 = eo1 `shiftL` 3 .|. eo2 `shiftR` 2                 o2 = eo2 `shiftL` 6 .|. eo3 `shiftL` 1 .|. eo4 `shiftR` 4-            in [o1, o2]-        dec [eo1, eo2, eo3, eo4, eo5] = let+            in [Just o1, Just o2]+        dec [Just eo1, Just eo2, Just eo3, Just eo4, Just eo5] = let                 o1 = eo1 `shiftL` 3 .|. eo2 `shiftR` 2                 o2 = eo2 `shiftL` 6 .|. eo3 `shiftL` 1 .|. eo4 `shiftR` 4                 o3 = eo4 `shiftL` 4 .|. eo5 `shiftR` 1-            in [o1, o2, o3]-        dec [eo1, eo2, eo3, eo4, eo5, eo6, eo7] = let+            in [Just o1, Just o2, Just o3]+        dec [Just eo1, Just eo2, Just eo3, Just eo4, Just eo5, Just eo6, Just eo7] = let                 o1 = eo1 `shiftL` 3 .|. eo2 `shiftR` 2                 o2 = eo2 `shiftL` 6 .|. eo3 `shiftL` 1 .|. eo4 `shiftR` 4                 o3 = eo4 `shiftL` 4 .|. eo5 `shiftR` 1                 o4 = eo5 `shiftL` 7 .|. eo6 `shiftL` 2 .|. eo7 `shiftR` 3-            in [o1, o2, o3, o4]-        dec (eo1:eo2:eo3:eo4:eo5:eo6:eo7:eo8:eos) = let+            in [Just o1, Just o2, Just o3, Just o4]+        dec (Just eo1:Just eo2:Just eo3:Just eo4:Just eo5:Just eo6:Just eo7:Just eo8:eos) = let                 o1 = eo1 `shiftL` 3 .|. eo2 `shiftR` 2                 o2 = eo2 `shiftL` 6 .|. eo3 `shiftL` 1 .|. eo4 `shiftR` 4                 o3 = eo4 `shiftL` 4 .|. eo5 `shiftR` 1                 o4 = eo5 `shiftL` 7 .|. eo6 `shiftL` 2 .|. eo7 `shiftR` 3                 o5 = eo7 `shiftL` 5 .|. eo8-            in o1:o2:o3:o4:o5:(dec eos)+            in Just o1:Just o2:Just o3:Just o4:Just o5:(dec eos)+        dec _ = [Nothing]     in-        if (length s `mod` 8 == 0)-            then liftM dec $ sequence $ map (flip M.lookup decodeMap) (filter (/= '=') s)-            else Nothing+        dec . map (flip M.lookup decodeMap) . takeWhile (/= '=')++-- | Decode data (strict).+decode :: String+    -> Maybe [Word8]+decode = sequence . decode'  -- {{{1 chop -- | Chop up a string in parts.
src/Codec/Binary/Base32Hex.hs view
@@ -23,6 +23,7 @@ module Codec.Binary.Base32Hex     ( encode     , decode+    , decode'     , chop     , unchop     ) where@@ -102,38 +103,42 @@     in (foldr (\ i s -> (encodeArray ! i) : s) "" [i1, i2, i3, i4, i5, i6, i7, i8]) ++ (encode os)  -- {{{1 decode--- | Decode data.-decode :: String-    -> Maybe [Word8]-decode s = let+-- | Decode data (lazy).+decode' :: String+    -> [Maybe Word8]+decode' = let         dec [] = []-        dec [eo1, eo2] = [eo1 `shiftL` 3 .|. eo2 `shiftR` 2]-        dec [eo1, eo2, eo3, eo4] = let+        dec [Just eo1, Just eo2] = [Just (eo1 `shiftL` 3 .|. eo2 `shiftR` 2)]+        dec [Just eo1, Just eo2, Just eo3, Just eo4] = let                 o1 = eo1 `shiftL` 3 .|. eo2 `shiftR` 2                 o2 = eo2 `shiftL` 6 .|. eo3 `shiftL` 1 .|. eo4 `shiftR` 4-            in [o1, o2]-        dec [eo1, eo2, eo3, eo4, eo5] = let+            in [Just o1, Just o2]+        dec [Just eo1, Just eo2, Just eo3, Just eo4, Just eo5] = let                 o1 = eo1 `shiftL` 3 .|. eo2 `shiftR` 2                 o2 = eo2 `shiftL` 6 .|. eo3 `shiftL` 1 .|. eo4 `shiftR` 4                 o3 = eo4 `shiftL` 4 .|. eo5 `shiftR` 1-            in [o1, o2, o3]-        dec [eo1, eo2, eo3, eo4, eo5, eo6, eo7] = let+            in [Just o1, Just o2, Just o3]+        dec [Just eo1, Just eo2, Just eo3, Just eo4, Just eo5, Just eo6, Just eo7] = let                 o1 = eo1 `shiftL` 3 .|. eo2 `shiftR` 2                 o2 = eo2 `shiftL` 6 .|. eo3 `shiftL` 1 .|. eo4 `shiftR` 4                 o3 = eo4 `shiftL` 4 .|. eo5 `shiftR` 1                 o4 = eo5 `shiftL` 7 .|. eo6 `shiftL` 2 .|. eo7 `shiftR` 3-            in [o1, o2, o3, o4]-        dec (eo1:eo2:eo3:eo4:eo5:eo6:eo7:eo8:eos) = let+            in [Just o1, Just o2, Just o3, Just o4]+        dec (Just eo1:Just eo2:Just eo3:Just eo4:Just eo5:Just eo6:Just eo7:Just eo8:eos) = let                 o1 = eo1 `shiftL` 3 .|. eo2 `shiftR` 2                 o2 = eo2 `shiftL` 6 .|. eo3 `shiftL` 1 .|. eo4 `shiftR` 4                 o3 = eo4 `shiftL` 4 .|. eo5 `shiftR` 1                 o4 = eo5 `shiftL` 7 .|. eo6 `shiftL` 2 .|. eo7 `shiftR` 3                 o5 = eo7 `shiftL` 5 .|. eo8-            in o1:o2:o3:o4:o5:(dec eos)+            in Just o1:Just o2:Just o3:Just o4:Just o5:(dec eos)+        dec _ = [Nothing]     in-        if (length s `mod` 8 == 0)-            then liftM dec $ sequence $ map (flip M.lookup decodeMap) (filter (/= '=') s)-            else Nothing+        dec . map (flip M.lookup decodeMap) . takeWhile (/= '=')++-- | Decode data (strict).+decode :: String+    -> Maybe [Word8]+decode = sequence . decode'  -- {{{1 chop -- | Chop up a string in parts.
src/Codec/Binary/Base64.hs view
@@ -23,6 +23,7 @@ module Codec.Binary.Base64     ( encode     , decode+    , decode'     , chop     , unchop     ) where@@ -90,25 +91,29 @@     in (foldr (\ i s -> (encodeArray ! i) : s) "" [i1, i2, i3, i4]) ++ encode os  -- {{{1 decode--- | Decode data.-decode :: String-    -> Maybe [Word8]-decode s = let+-- | Decode data (lazy).+decode' :: String+    -> [Maybe Word8]+decode' = let         dec [] = []-        dec [eo1, eo2] = [eo1 `shiftL` 2 .|. eo2 `shiftR` 4]-        dec [eo1, eo2, eo3] = let+        dec [Just eo1, Just eo2] = [Just (eo1 `shiftL` 2 .|. eo2 `shiftR` 4)]+        dec [Just eo1, Just eo2, Just eo3] = let                 o1 = eo1 `shiftL` 2 .|. eo2 `shiftR` 4                 o2 = eo2 `shiftL` 4 .|. eo3 `shiftR` 2-            in [o1, o2]-        dec (eo1:eo2:eo3:eo4:eos) = let+            in [Just o1, Just o2]+        dec (Just eo1:Just eo2:Just eo3:Just eo4:eos) = let                 o1 = eo1 `shiftL` 2 .|. eo2 `shiftR` 4                 o2 = eo2 `shiftL` 4 .|. eo3 `shiftR` 2                 o3 = eo3 `shiftL` 6 .|. eo4-            in o1:o2:o3:(dec eos)+            in Just o1:Just o2:Just o3:(dec eos)+        dec _ = [Nothing]     in-        if (length s `mod` 4 == 0)-            then liftM dec $ sequence $ map (flip M.lookup decodeMap) (filter (/= '=') s)-            else Nothing+        dec . map (flip M.lookup decodeMap) . takeWhile (/= '=')++-- | Decode data (strict).+decode :: String+    -> Maybe [Word8]+decode = sequence . decode'  -- {{{1 chop -- | Chop up a string in parts.
src/Codec/Binary/Base64Url.hs view
@@ -23,6 +23,7 @@ module Codec.Binary.Base64Url     ( encode     , decode+    , decode'     , chop     , unchop     ) where@@ -44,15 +45,20 @@     in map swapUrlChar $ Base64.encode os  -- {{{1 decode--- | Decode data.-decode :: String-    -> Maybe [Word8]-decode cs = let+-- | Decode data (lazy).+decode' :: String+    -> [Maybe Word8]+decode' = let         unSwapUrlChar c = case c of             '-' -> '+'             '_' -> '/'             _ -> c-    in Base64.decode $ map unSwapUrlChar cs+    in Base64.decode' . map unSwapUrlChar++-- | Decode data (strict).+decode :: String+    -> Maybe [Word8]+decode = sequence . decode'  -- {{{1 chop -- | Chop up a string in parts.
src/Codec/Binary/DataEncoding.hs view
@@ -18,13 +18,15 @@  -- | Data encoding module. -----   It exposes several instances of 'DataCoded', one for each data encoding+--   It exposes several instances of 'DataCodec', one for each data encoding --   implemented in the library without causing the name clashing that would --   result from importing the individual encoding modules. -- module Codec.Binary.DataEncoding-    ( encode+    ( DataCodec+    , encode     , decode+    , decode'     , chop     , unchop     , base16@@ -50,6 +52,7 @@ data DataCodec = DataCodec {     encode :: [Word8] -> String,     decode :: String -> Maybe [Word8],+    decode' :: String -> [Maybe Word8],     chop :: Int -> String -> [String],     unchop :: [String] -> String }@@ -61,6 +64,7 @@ base16 = DataCodec {     encode=Base16.encode,     decode=Base16.decode,+    decode'=Base16.decode',     chop=Base16.chop,     unchop=Base16.unchop }@@ -72,6 +76,7 @@ base32 = DataCodec {     encode=Base32.encode,     decode=Base32.decode,+    decode'=Base32.decode',     chop=Base32.chop,     unchop=Base32.unchop }@@ -83,6 +88,7 @@ base32Hex = DataCodec {     encode=Base32Hex.encode,     decode=Base32Hex.decode,+    decode'=Base32Hex.decode',     chop=Base32Hex.chop,     unchop=Base32Hex.unchop }@@ -94,6 +100,7 @@ base64 = DataCodec {     encode=Base64.encode,     decode=Base64.decode,+    decode'=Base64.decode',     chop=Base64.chop,     unchop=Base64.unchop }@@ -105,6 +112,7 @@ base64Url = DataCodec {     encode=Base64Url.encode,     decode=Base64Url.decode,+    decode'=Base64Url.decode',     chop=Base64Url.chop,     unchop=Base64Url.unchop }@@ -116,6 +124,7 @@ uu = DataCodec {     encode=Uu.encode,     decode=Uu.decode,+    decode'=Uu.decode',     chop=Uu.chop,     unchop=Uu.unchop }
src/Codec/Binary/Uu.hs view
@@ -24,6 +24,7 @@ module Codec.Binary.Uu     ( encode     , decode+    , decode'     , chop     , unchop     ) where@@ -91,25 +92,29 @@     in (foldr (\ i s -> (encodeArray ! i) : s) "" [i1, i2, i3, i4]) ++ encode os  -- {{{1 decode--- | Decode data.-decode :: String-    -> Maybe [Word8]-decode s = let+-- | Decode data (lazy).+decode' :: String+    -> [Maybe Word8]+decode' = let         dec [] = []-        dec [eo1, eo2] = [eo1 `shiftL` 2 .|. eo2 `shiftR` 4]-        dec [eo1, eo2, eo3] = let+        dec [Just eo1, Just eo2] = [Just (eo1 `shiftL` 2 .|. eo2 `shiftR` 4)]+        dec [Just eo1, Just eo2, Just eo3] = let                 o1 = eo1 `shiftL` 2 .|. eo2 `shiftR` 4                 o2 = eo2 `shiftL` 4 .|. eo3 `shiftR` 2-            in [o1, o2]-        dec (eo1:eo2:eo3:eo4:eos) = let+            in [Just o1, Just o2]+        dec (Just eo1:Just eo2:Just eo3:Just eo4:eos) = let                 o1 = eo1 `shiftL` 2 .|. eo2 `shiftR` 4                 o2 = eo2 `shiftL` 4 .|. eo3 `shiftR` 2                 o3 = eo3 `shiftL` 6 .|. eo4-            in o1:o2:o3:(dec eos)+            in Just o1:Just o2:Just o3:(dec eos)+        dec _ = [Nothing]     in-        if (length s `mod` 4 /= 1)-            then liftM dec $ sequence $ map (flip M.lookup decodeMap) s-            else Nothing+        dec . map (flip M.lookup decodeMap)++-- | Decode data (strict).+decode :: String+    -> Maybe [Word8]+decode = sequence . decode'  -- {{{1 chop -- | Chop up a string in parts.  Each string in the resulting list is prepended