cga/OS/FileExt.hs

35 lines
859 B
Haskell
Raw Normal View History

{-# OPTIONS_HADDOCK ignore-exports #-}
2014-10-07 17:12:07 +00:00
module OS.FileExt where
2014-09-30 22:05:29 +00:00
2014-10-01 21:02:43 +00:00
-- |Compare the extension of a file with the given String.
cmpExt :: String -> FilePath -> Bool
cmpExt checkExt = (==) checkExt . getExt
2014-10-01 21:02:43 +00:00
-- |Get the extension of a file.
getExt :: FilePath -> String
getExt fp
| hasExt fp = last .
splitBy (== '.') .
last .
splitBy (== '/') $
fp
| otherwise = ""
-- |Check if the file has an extension.
hasExt :: FilePath -> Bool
2014-10-06 22:41:03 +00:00
hasExt = (>1) . length . splitBy (== '.')
2014-10-01 21:02:43 +00:00
-- |Split an array into subarrays depending on a given condition.
splitBy :: (a -> Bool) -- ^ condition
-> [a] -- ^ array to split
-> [[a]] -- ^ splitted array
splitBy f s = case dropWhile f s of
[] -> []
s' -> w : splitBy f s''
where (w, s'') = break f s'