std.path review: second update
KennyTM~
kennytm at gmail.com
Fri Jul 29 12:47:55 PDT 2011
On Jul 30, 11 02:06, Lars T. Kyllingstad wrote:
> Here's a new update based on your comments and requests. Code and docs
> are in the usual place,
>
> https://github.com/kyllingstad/phobos/blob/std-path/std/path.d
> http://www.kyllingen.net/code/std-path/phobos-prerelease/std_path.html
>
> Here are the highlights:
>
> * UNC paths, i.e. \\server\share\..., are now (hopefully) handled
> correctly on Windows. See the baseName(), dirName(), rootName(),
> driveName(), pathSplitter(), etc. docs for examples.
>
> * Support for //foo/bar paths on POSIX has been removed.
>
> * rootName() is new.
>
> * pathSplitter() now returns a bidirectional range.
>
> * pathCharMatch() and fcmp() have been replaced by improved functions
> filenameCharCmp() and filenameCmp(), respectively, with optional case
> sensitivity.
>
> * joinPath() has been renamed to buildPath().
>
> * Added a function buildNormalizedPath(), which performs normalization
> while joining the segments.
>
> * Redefined normalize() in terms of buildNormalizedPath().
>
> I am still unsure of the extent to which long UNC paths (i.e. \\?\...)
> should be supported, if at all. If anyone has anything to say on the
> matter, please do. :)
>
> -Lars
Thanks for the nice work!
Comments:
- pathSplitter: empty, front, back could be const. Also, make the struct
'static struct'.
- hasDrive, isDriveRoot: the path
"#:\x"
should not pass hasDrive. In Windows only /[a-zA-Z]/ are supported drive
letters. '#:' may work but is not officially supported.
- Bug 6390 (= 6337) has been fixed. Some CTFE tests can be enabled.
- baseName, dirName "TODO: @safe pure nothrow": Mention which bugs are
preventing this (std.conv.to and std.string.chomp?).
- buildPath, More than two path components: looks like a perfect
candidate for std.algorithm.reduce. And this should probably accept a
range, but I'm not sure.
- CaseSensitive.osDefault: As I mentioned before, version(OSX) should
set this to 'no'.
- globMatch: only UTF-8 is supported?
- extension: Note that the DDoc text of 'extension' is highlighted.
More information about the Digitalmars-d
mailing list