yesod/Web/Authenticate/Internal.hs
2010-10-04 07:12:59 +02:00

23 lines
477 B
Haskell

module Web.Authenticate.Internal
( qsEncode
) where
import Codec.Binary.UTF8.String (encode)
import Numeric (showHex)
qsEncode :: String -> String
qsEncode =
concatMap go . encode
where
go 32 = "+" -- space
go 46 = "."
go 45 = "-"
go 126 = "~"
go 95 = "_"
go c
| 48 <= c && c <= 57 = [w2c c]
| 65 <= c && c <= 90 = [w2c c]
| 97 <= c && c <= 122 = [w2c c]
go c = '%' : showHex c ""
w2c = toEnum . fromEnum