mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
19 lines
613 B
Haskell
19 lines
613 B
Haskell
module URLEncoding where
|
|
|
|
import Data.Bits (shiftL, (.|.))
|
|
import Data.Char (chr,digitToInt,isHexDigit)
|
|
|
|
|
|
urlDecodeUnicode :: String -> String
|
|
urlDecodeUnicode [] = ""
|
|
urlDecodeUnicode ('%':'u':x1:x2:x3:x4:s)
|
|
| all isHexDigit [x1,x2,x3,x4] =
|
|
chr ( digitToInt x1 `shiftL` 12
|
|
.|. digitToInt x2 `shiftL` 8
|
|
.|. digitToInt x3 `shiftL` 4
|
|
.|. digitToInt x4) : urlDecodeUnicode s
|
|
urlDecodeUnicode ('%':x1:x2:s) | isHexDigit x1 && isHexDigit x2 =
|
|
chr ( digitToInt x1 `shiftL` 4
|
|
.|. digitToInt x2) : urlDecodeUnicode s
|
|
urlDecodeUnicode (c:s) = c : urlDecodeUnicode s
|