From 994e2777c34e68abef660a698116d4e733c6951c Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Wed, 22 Sep 2021 20:32:34 -0400 Subject: [PATCH] implemented editAnchor --- src/Helpers.hs | 14 ++++++++++++++ test/HelpersSpec.hs | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/Helpers.hs b/src/Helpers.hs index b98560f..51ce991 100644 --- a/src/Helpers.hs +++ b/src/Helpers.hs @@ -29,6 +29,7 @@ module Helpers ( editHost, dropParam, editParam, + editAnchor, incParamBy, incStrBy ) where @@ -120,6 +121,19 @@ editParam pName f url = do ) $ params url Just url { params = params' } +-- | Edit an anchor +editAnchor + :: (String -> Maybe String) + -- ^ the transformation function + -> Url + -- ^ the 'Url' being edited + -> Maybe Url +editAnchor f url = case anchor url of + Just a -> do + a' <- f a + Just url { anchor = Just a' } + Nothing -> Just url + -- | Increment a parameter of a 'Url' by a given amount (if possible) incParamBy :: Integer diff --git a/test/HelpersSpec.hs b/test/HelpersSpec.hs index 9f74a63..690023e 100644 --- a/test/HelpersSpec.hs +++ b/test/HelpersSpec.hs @@ -37,6 +37,7 @@ spec = do editHostSpec dropParamSpec editParamSpec + editAnchorSpec incParamBySpec incStrBySpec @@ -151,6 +152,25 @@ editParamSpec = describe "editParam" $ mapM_ , ( "c", Nothing ) ] +editAnchorSpec :: Spec +editAnchorSpec = describe "editAnchor" $ mapM_ + ( \(desc, f, url, expected) -> context desc $ + it ("should be " ++ show url) $ + editAnchor f url `shouldBe` expected + ) + + -- description, function, url, expected + [ ( "reverse", Just . reverse, fooUrl, Just reversedUrl ) + , ( "fail", const Nothing, fooUrl, Nothing ) + , ( "reverse empty", Just . reverse, simpleUrl, Just simpleUrl ) + , ( "fail empty", const Nothing, simpleUrl, Just simpleUrl ) + ] + + where + fooUrl = urlWith "foo" + reversedUrl = urlWith "oof" + urlWith a = simpleUrl { anchor = Just a } + incParamBySpec :: Spec incParamBySpec = describe "incParamBy" $ mapM_ ( \(desc, n, pName, expected) -> context desc $