diff options
author | Joey Hess <joey@kitenet.net> | 2013-11-14 17:04:58 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-11-14 17:04:58 -0400 |
commit | 521ef9dfebd6a9418a5dce7d1686dbf353ddd0a0 (patch) | |
tree | afe6bb5d52e21a049f04020ae448afb81adc02a7 /Git/Url.hs | |
parent | f4b4f327b69189d24663a7db6407c1f7a6e48fdd (diff) | |
parent | 5c6f6e4d0abb9b4856908a500611044b3b7a48e6 (diff) |
Merge branch 'master' into tasty-tests
Conflicts:
Test.hs
Diffstat (limited to 'Git/Url.hs')
-rw-r--r-- | Git/Url.hs | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/Git/Url.hs b/Git/Url.hs index 7befc4669..d383a6aca 100644 --- a/Git/Url.hs +++ b/Git/Url.hs @@ -37,32 +37,33 @@ uriRegName' a = fixup $ uriRegName a fixup x = x {- Hostname of an URL repo. -} -host :: Repo -> String +host :: Repo -> Maybe String host = authpart uriRegName' {- Port of an URL repo, if it has a nonstandard one. -} port :: Repo -> Maybe Integer port r = case authpart uriPort r of - ":" -> Nothing - (':':p) -> readish p - _ -> Nothing + Nothing -> Nothing + Just ":" -> Nothing + Just (':':p) -> readish p + Just _ -> Nothing {- Hostname of an URL repo, including any username (ie, "user@host") -} -hostuser :: Repo -> String -hostuser r = authpart uriUserInfo r ++ authpart uriRegName' r +hostuser :: Repo -> Maybe String +hostuser r = (++) + <$> authpart uriUserInfo r + <*> authpart uriRegName' r {- The full authority portion an URL repo. (ie, "user@host:port") -} -authority :: Repo -> String +authority :: Repo -> Maybe String authority = authpart assemble where assemble a = uriUserInfo a ++ uriRegName' a ++ uriPort a {- Applies a function to extract part of the uriAuthority of an URL repo. -} -authpart :: (URIAuth -> a) -> Repo -> a -authpart a Repo { location = Url u } = a auth - where - auth = fromMaybe (error $ "bad url " ++ show u) (uriAuthority u) +authpart :: (URIAuth -> a) -> Repo -> Maybe a +authpart a Repo { location = Url u } = a <$> uriAuthority u authpart _ repo = notUrl repo notUrl :: Repo -> a |