Made basename() generic in string type.

This commit is contained in:
Andrei Alexandrescu 2010-06-08 17:24:11 +00:00
parent 0cdf093766
commit 798b6c0cea

View file

@ -278,30 +278,30 @@ unittest
* ----- * -----
*/ */
string basename(string fullname, string extension = null) S basename(S)(S fullname, string extension = null)
out (result) out (result)
{ {
assert(result.length <= fullname.length); assert(result.length <= fullname.length);
} }
body body
{ {
auto i = fullname.length; auto i = fullname.length;
for (; i > 0; i--) for (; i > 0; i--)
{ {
version(Win32) version(Win32)
{ {
if (fullname[i - 1] == ':' || fullname[i - 1] == '\\') if (fullname[i - 1] == ':' || fullname[i - 1] == '\\')
break; break;
} }
version(Posix) version(Posix)
{ {
if (fullname[i - 1] == '/') if (fullname[i - 1] == '/')
break; break;
} }
} }
return chomp(fullname[i .. fullname.length], return chomp(fullname[i .. fullname.length],
extension ? extension : ""); extension ? extension : "");
} }
/** Alias for $(D_PARAM basename), kept for backward /** Alias for $(D_PARAM basename), kept for backward
* compatibility. New code should use $(D_PARAM basename). */ * compatibility. New code should use $(D_PARAM basename). */