implemented Handlers.dropParam
This commit is contained in:
parent
b809cdf082
commit
bb3877cd3a
|
@ -26,7 +26,8 @@ module Helpers (
|
||||||
textToUrl,
|
textToUrl,
|
||||||
urlToText,
|
urlToText,
|
||||||
makeHttps,
|
makeHttps,
|
||||||
editHost
|
editHost,
|
||||||
|
dropParam
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import qualified Data.List as L
|
import qualified Data.List as L
|
||||||
|
@ -84,6 +85,17 @@ editHost f url = do
|
||||||
host' <- f $ host url
|
host' <- f $ host url
|
||||||
Just url { host = host' }
|
Just url { host = host' }
|
||||||
|
|
||||||
|
-- | Drop a parameter from a 'Url' (if present)
|
||||||
|
dropParam
|
||||||
|
:: String
|
||||||
|
-- ^ the parameter to be dropped
|
||||||
|
-> Url
|
||||||
|
-- ^ the 'Url' being modified
|
||||||
|
-> Url
|
||||||
|
dropParam pName url = let
|
||||||
|
params' = filter (\p -> fst p /= pName) $ params url
|
||||||
|
in url { params = params' }
|
||||||
|
|
||||||
subToUrl :: T.Text -> Maybe Url
|
subToUrl :: T.Text -> Maybe Url
|
||||||
subToUrl text = case T.splitOn "://" text of
|
subToUrl text = case T.splitOn "://" text of
|
||||||
[protT, raw] -> do
|
[protT, raw] -> do
|
||||||
|
|
|
@ -35,6 +35,7 @@ spec = do
|
||||||
urlToTextSpec
|
urlToTextSpec
|
||||||
makeHttpsSpec
|
makeHttpsSpec
|
||||||
editHostSpec
|
editHostSpec
|
||||||
|
dropParamSpec
|
||||||
|
|
||||||
textToUrlSpec :: Spec
|
textToUrlSpec :: Spec
|
||||||
textToUrlSpec = describe "textToUrl" $ mapM_
|
textToUrlSpec = describe "textToUrl" $ mapM_
|
||||||
|
@ -99,6 +100,29 @@ editHostSpec = describe "editHost" $ mapM_
|
||||||
reversed = Just simpleUrl
|
reversed = Just simpleUrl
|
||||||
{ host = reverse $ host simpleUrl }
|
{ host = reverse $ host simpleUrl }
|
||||||
|
|
||||||
|
dropParamSpec :: Spec
|
||||||
|
dropParamSpec = describe "dropParam" $ mapM_
|
||||||
|
( \(desc, p, expected) -> context desc $
|
||||||
|
it ("should be " ++ show expected) $
|
||||||
|
dropParam p url `shouldBe` expected
|
||||||
|
)
|
||||||
|
|
||||||
|
-- description, param, expected
|
||||||
|
[ ( "with val", "a", withVal )
|
||||||
|
, ( "without val", "b", withoutVal )
|
||||||
|
, ( "not present", "c", url )
|
||||||
|
]
|
||||||
|
|
||||||
|
where
|
||||||
|
url = simpleUrl
|
||||||
|
{ params =
|
||||||
|
[ ("a", Just "1")
|
||||||
|
, ("b", Nothing)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
withVal = simpleUrl { params = [("b", Nothing)] }
|
||||||
|
withoutVal = simpleUrl { params = [("a", Just "1")] }
|
||||||
|
|
||||||
simpleTxt :: T.Text
|
simpleTxt :: T.Text
|
||||||
simpleTxt = "http://example.com/"
|
simpleTxt = "http://example.com/"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user