add dropFromEnd

This commit is contained in:
Joey Hess 2018-11-23 11:24:05 -04:00
parent acb4bcf2db
commit 850d19d038
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
5 changed files with 10 additions and 6 deletions

View file

@ -26,8 +26,7 @@ isRemoteKey k = "remote." `isPrefixOf` k && ".url" `isSuffixOf` k
{- Get a remote's name from the config key that specifies its location. -}
remoteKeyToRemoteName :: String -> RemoteName
remoteKeyToRemoteName k = intercalate "." $
reverse $ drop 1 $ reverse $ drop 1 $ splitc '.' k
remoteKeyToRemoteName k = intercalate "." $ dropFromEnd 1 $ drop 1 $ splitc '.' k
{- Construct a legal git remote name out of an arbitrary input string.
-

View file

@ -16,6 +16,7 @@ module Types.Export (
) where
import Git.FilePath
import Utility.Split
import qualified System.FilePath.Posix as Posix
@ -50,4 +51,4 @@ exportDirectories (ExportLocation f) =
subs ps (d:ds) = (d:ps) : subs (d:ps) ds
dirs = map Posix.dropTrailingPathSeparator $
reverse $ drop 1 $ reverse $ Posix.splitPath f
dropFromEnd 1 $ Posix.splitPath f

View file

@ -30,6 +30,7 @@ import Utility.Data
import Utility.PartialPrelude
import Utility.Misc
import Utility.Tuple
import Utility.Split
import Data.List
import Data.Time.Clock
@ -265,7 +266,7 @@ toRecurrance s = case words s of
constructor "month" = Just Monthly
constructor "year" = Just Yearly
constructor u
| "s" `isSuffixOf` u = constructor $ reverse $ drop 1 $ reverse u
| "s" `isSuffixOf` u = constructor $ dropFromEnd 1 u
| otherwise = Nothing
withday sd u = do
c <- constructor u

View file

@ -28,3 +28,7 @@ splitc c s = case break (== c) s of
-- | same as Data.List.Utils.replace
replace :: Eq a => [a] -> [a] -> [a] -> [a]
replace old new = intercalate new . split old
-- | Only traverses the list once while dropping the last n characters.
dropFromEnd :: Int -> [a] -> [a]
dropFromEnd n l = zipWith const l (drop n l)

View file

@ -278,8 +278,7 @@ getUrlInfo url uo = case parseURIRelaxed url of
contentDispositionFilename :: String -> Maybe FilePath
contentDispositionFilename s
| "attachment; filename=\"" `isPrefixOf` s && "\"" `isSuffixOf` s =
Just $ reverse $ drop 1 $ reverse $
drop 1 $ dropWhile (/= '"') s
Just $ dropFromEnd 1 $ drop 1 $ dropWhile (/= '"') s
| otherwise = Nothing
headRequest :: Request -> Request