diff options
| author | Sigbjorn Finne <sof@galois.com> | 2008-09-14 11:00:32 -0700 | 
|---|---|---|
| committer | Sigbjorn Finne <sof@galois.com> | 2008-09-14 11:00:32 -0700 | 
| commit | 7567f36fdfc9f6416bba4db23e4f9bbdcf874dff (patch) | |
| tree | 1123ce38bcb92db82152adf81f277d9ba6bb437b | |
| parent | 41a85f826ce15708d93c0cc9095ac778a80060b6 (diff) | |
encode: simplified
| -rw-r--r-- | Codec/MIME/QuotedPrintable.hs | 15 | 
1 files changed, 7 insertions, 8 deletions
| diff --git a/Codec/MIME/QuotedPrintable.hs b/Codec/MIME/QuotedPrintable.hs index 72fbaa6..a6dc99a 100644 --- a/Codec/MIME/QuotedPrintable.hs +++ b/Codec/MIME/QuotedPrintable.hs @@ -40,17 +40,16 @@ encode xs = encodeLength 0 xs  encodeLength :: Int -> String -> String  encodeLength _ "" = "" +encodeLength n (x:xs) + | n >= 72  = '=':'\r':'\n':encodeLength 0 (x:xs)  encodeLength n ('=':xs)  - | n <= 72   = '=':'3':'D':encodeLength (n+3) xs - | otherwise = '=':'\r':'\n': encodeLength 0 ('=':xs) + = '=':'3':'D':encodeLength 0 xs  encodeLength n (x:xs) - | n >= 75  = '=':'\r':'\n':encodeLength 0 (x:xs) - | ox >= 0x21 && ox <= 0x7e = x : encodeLength (n+1) xs - | (ox == 0x09 || ox == 0x20) && n < 74 = x : encodeLength (n+1) xs   | ox >= 0x100 = error ("QuotedPrintable.encode: encountered > 8 bit character: " ++ show (x,ox)) -  - | n <= 72 = '=':showH (ox `div` 16) : showH (ox `mod` 16) : encodeLength (n+3) xs - | otherwise =  '=':'\r':'\n':encodeLength 0 (x:xs) + | n >= 72     = '=':'\r':'\n':encodeLength 0 (x:xs) + | ox >= 0x21 && ox <= 0x7e = x : encodeLength (n+1) xs + | ox == 0x09 || ox == 0x20 = x : encodeLength (n+1) xs + | otherwise = '=':'\r':'\n':encodeLength 0 (x:xs)   where    ox = ord x    showH v | 
