Difference between revisions of "FilePath"

From HaskellWiki
Jump to navigation Jump to search
Line 32: Line 32:
 
FilePath -> Bool which checks if some path is below another in the
 
FilePath -> Bool which checks if some path is below another in the
 
tree. I'll think about adding that one.
 
tree. I'll think about adding that one.
 
\\?\ should be a drive, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/naming_a_file.asp
 
   
 
Another thing I thought of would be a "canonicalPath" IO action (canonicalPath :: FilePath -> IO FilePath) that returns a FilePath that implements case-preserving-case-insensitive matching. For example, if there is a file named "Hello There.txt" in C:\, then
 
Another thing I thought of would be a "canonicalPath" IO action (canonicalPath :: FilePath -> IO FilePath) that returns a FilePath that implements case-preserving-case-insensitive matching. For example, if there is a file named "Hello There.txt" in C:\, then

Revision as of 13:47, 19 July 2006

I have written a System.FilePath module in part based on the one in Yhc, and in part based on the one in Cabal (thanks to Lemmih). The aim is to try and get this module into the base package, as FilePath's are something many programs use, but its all too easy to hack up a little function that gets it right most of the time on most platforms, and there lies a source of bugs.

This module is Posix (Linux) and Windows capable - just import System.FilePath and it will pick the right one. Of course, if you demand Windows paths on all OS's, then System.FilePath.Windows will give you that (same with Posix). Written in Haskell 98 + Heirarchical Modules.

If you go to the haddock page there are a few little examples at the top of the file.

The Yhc project, hquickfile and a few other utilites are already using this module succesfully.

Comments welcome. Thanks

Thoughts/Todo

For that there would need to be some FilePath function such as checkDownstream :: FilePath -> FilePath -> Bool which checks if some path is below another in the tree. I'll think about adding that one.

Another thing I thought of would be a "canonicalPath" IO action (canonicalPath :: FilePath -> IO FilePath) that returns a FilePath that implements case-preserving-case-insensitive matching. For example, if there is a file named "Hello There.txt" in C:\, then (canonicalPath "c:\hello there.txt ") would give "C:\Hello There.txt").

Thoughts on FilePath as a abstract type

Add them here :)