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