-----------------------------------------------------------------------------
--- $Id: DriverPhases.hs,v 1.37 2005/05/16 13:47:58 simonmar Exp $
+-- $Id: DriverPhases.hs,v 1.38 2005/05/17 11:01:59 simonmar Exp $
--
-- GHC Driver
--
isSourceFilename -- :: FilePath -> Bool
) where
-import Util ( getFileSuffix )
+import Util ( suffixOf )
import Panic ( panic )
-----------------------------------------------------------------------------
isSourceSuffix suff = isHaskellishSuffix suff || isCishSuffix suff
-isHaskellishFilename f = isHaskellishSuffix (getFileSuffix f)
-isHaskellSrcFilename f = isHaskellSrcSuffix (getFileSuffix f)
-isCishFilename f = isCishSuffix (getFileSuffix f)
-isExtCoreFilename f = isExtCoreSuffix (getFileSuffix f)
-isObjectFilename f = isObjectSuffix (getFileSuffix f)
-isHaskellUserSrcFilename f = isHaskellUserSrcSuffix (getFileSuffix f)
-isDynLibFilename f = isDynLibSuffix (getFileSuffix f)
-isSourceFilename f = isSourceSuffix (getFileSuffix f)
+isHaskellishFilename f = isHaskellishSuffix (suffixOf f)
+isHaskellSrcFilename f = isHaskellSrcSuffix (suffixOf f)
+isCishFilename f = isCishSuffix (suffixOf f)
+isExtCoreFilename f = isExtCoreSuffix (suffixOf f)
+isObjectFilename f = isObjectSuffix (suffixOf f)
+isHaskellUserSrcFilename f = isHaskellUserSrcSuffix (suffixOf f)
+isDynLibFilename f = isDynLibSuffix (suffixOf f)
+isSourceFilename f = isSourceSuffix (suffixOf f)
-- Filename utils
Suffix,
- splitFilename, getFileSuffix, splitFilenameDir, joinFileExt, joinFileName,
- splitFilename3, removeSuffix,
- dropLongestPrefix, takeLongestPrefix, splitLongestPrefix,
+ splitFilename, suffixOf, basenameOf, joinFileExt,
+ splitFilenameDir, joinFileExt, joinFileName,
+ splitFilename3,
+ splitLongestPrefix,
replaceFilenameSuffix, directoryOf, filenameOf,
replaceFilenameDirectory,
escapeSpaces, isPathSeparator,
splitFilename :: String -> (String,Suffix)
splitFilename f = splitLongestPrefix f (=='.')
-getFileSuffix :: String -> Suffix
-getFileSuffix f = dropLongestPrefix f (=='.')
+basenameOf :: FilePath -> String
+basenameOf = fst . splitFilename
+
+suffixOf :: FilePath -> Suffix
+suffixOf = snd . splitFilename
joinFileExt :: String -> String -> FilePath
joinFileExt path "" = path
joinFileName dir "" = dir
joinFileName dir fname = dir ++ '/':fname
-removeSuffix :: Char -> String -> Suffix
-removeSuffix c s = takeLongestPrefix s (==c)
-
-dropLongestPrefix :: String -> (Char -> Bool) -> String
-dropLongestPrefix s pred = snd (splitLongestPrefix s pred)
-
-takeLongestPrefix :: String -> (Char -> Bool) -> String
-takeLongestPrefix s pred = fst (splitLongestPrefix s pred)
-
-- split a string at the last character where 'pred' is True,
-- returning a pair of strings. The first component holds the string
-- up (but not including) the last character for which 'pred' returned
(_:pre) -> (reverse pre, reverse suf)
where (suf,pre) = break pred (reverse s)
-basenameOf :: FilePath -> String
-basenameOf = fst . splitFilename
-
-suffixOf :: FilePath -> Suffix
-suffixOf = snd . splitFilename
-
replaceFilenameSuffix :: FilePath -> Suffix -> FilePath
replaceFilenameSuffix file suf = basenameOf file `joinFileExt` suf