Proposal for std.path replacement
spir
denis.spir at gmail.com
Sun Mar 6 06:50:49 PST 2011
On 03/06/2011 12:50 PM, "Jérôme M. Berger" wrote:
> Rainer Schuetze wrote:
>> Looks good overall. I have a few comments and nitpicks though:
>>
>>> basename("dir/subdir/") --> "subdir"
>>> directory("dir/subdir/") --> "dir"
>>
> I would say:
> basename ("dir/subdir/") -> "" (or ".")
> dirname ("dir/subdir/") -> "dir/subdir"
> basename ("dir/subdir") -> "subdir"
> dirname ("dir/subdir") -> "dir"
>
> Same as Python does.
>
>> Is this what everybody expects? I'm not sure, but another possibility
>> would be to treat these as if "dir/subdir/." is passed. What is the
>> result of directory("/") or directory("d:/")?
>>
>>> extension("file") --> ""
>>> extension("file.ext") --> "ext"
>>
> extension ("file") -> ""
> extension ("file.ext") -> ".ext"
> extension ("file.") -> "."
>
>> What about "file."? I tried it on NTFS, but trailing '.' seems to always
>> be cut off. Is it possible to create such a file on unix systems? If
>> yes, you won't be able to recreate it from the result of basename() and
>> extension().
This solves the issue of recomposing a file path/name from its parts. But it's
not what people mean, expect, and need with the notion of extension. We would
have to remember this (weird) behaviour of the extension() function; and
systematically write strip off starting '.'. Then, we get caught when the
result is ""! Thus, we must add a check:
extension = path.extension(foo);
if (extension[0] == '.')
extension = extension[1..$];
Very nice...
Denis
--
_________________
vita es estrany
spir.wikidot.com
More information about the Digitalmars-d
mailing list