Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
15
Task/URL-decoding/Haskell/url-decoding-1.hs
Normal file
15
Task/URL-decoding/Haskell/url-decoding-1.hs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import qualified Data.Char as Char
|
||||
|
||||
urlDecode :: String -> Maybe String
|
||||
urlDecode [] = Just []
|
||||
urlDecode ('%':xs) =
|
||||
case xs of
|
||||
(a:b:xss) ->
|
||||
urlDecode xss
|
||||
>>= return . ((Char.chr . read $ "0x" ++ [a,b]) :)
|
||||
_ -> Nothing
|
||||
urlDecode ('+':xs) = urlDecode xs >>= return . (' ' :)
|
||||
urlDecode (x:xs) = urlDecode xs >>= return . (x :)
|
||||
|
||||
main :: IO ()
|
||||
main = putStrLn . maybe "Bad decode" id $ urlDecode "http%3A%2F%2Ffoo%20bar%2F"
|
||||
13
Task/URL-decoding/Haskell/url-decoding-2.hs
Normal file
13
Task/URL-decoding/Haskell/url-decoding-2.hs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import Data.Char (chr)
|
||||
import Data.List.Split (splitOn)
|
||||
|
||||
deCode :: String -> String
|
||||
deCode url =
|
||||
let ps = splitOn "%" url
|
||||
in concat $
|
||||
head ps :
|
||||
((\(a, b) -> (chr . read) (mappend "0x" a) : b) <$> (splitAt 2 <$> tail ps))
|
||||
|
||||
-- TEST ------------------------------------------------------------------------
|
||||
main :: IO ()
|
||||
main = putStrLn $ deCode "http%3A%2F%2Ffoo%20bar%2F"
|
||||
Loading…
Add table
Add a link
Reference in a new issue