path: change basename() argument from ext to suffix
Closes: https://github.com/nodejs/node/issues/44773 PR-URL: https://github.com/nodejs/node/pull/44774 Fixes: https://github.com/nodejs/node/issues/44773 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit is contained in:
parent
a2fcb6c51b
commit
4a8b8d5767
@ -62,7 +62,7 @@ example, `path.resolve('C:\\')` can potentially return a different result than
|
||||
`path.resolve('C:')`. For more information, see
|
||||
[this MSDN page][MSDN-Rel-Path].
|
||||
|
||||
## `path.basename(path[, ext])`
|
||||
## `path.basename(path[, suffix])`
|
||||
|
||||
<!-- YAML
|
||||
added: v0.1.25
|
||||
@ -73,12 +73,12 @@ changes:
|
||||
-->
|
||||
|
||||
* `path` {string}
|
||||
* `ext` {string} An optional file extension
|
||||
* `suffix` {string} An optional suffix to remove
|
||||
* Returns: {string}
|
||||
|
||||
The `path.basename()` method returns the last portion of a `path`, similar to
|
||||
the Unix `basename` command. Trailing directory separators are ignored, see
|
||||
[`path.sep`][].
|
||||
the Unix `basename` command. Trailing [directory separators][`path.sep`] are
|
||||
ignored.
|
||||
|
||||
```js
|
||||
path.basename('/foo/bar/baz/asdf/quux.html');
|
||||
@ -101,7 +101,7 @@ path.win32.basename('C:\\foo.HTML', '.html');
|
||||
// Returns: 'foo.HTML'
|
||||
```
|
||||
|
||||
A [`TypeError`][] is thrown if `path` is not a string or if `ext` is given
|
||||
A [`TypeError`][] is thrown if `path` is not a string or if `suffix` is given
|
||||
and is not a string.
|
||||
|
||||
## `path.delimiter`
|
||||
|
32
lib/path.js
32
lib/path.js
@ -743,12 +743,12 @@ const win32 = {
|
||||
|
||||
/**
|
||||
* @param {string} path
|
||||
* @param {string} [ext]
|
||||
* @param {string} [suffix]
|
||||
* @returns {string}
|
||||
*/
|
||||
basename(path, ext) {
|
||||
if (ext !== undefined)
|
||||
validateString(ext, 'ext');
|
||||
basename(path, suffix) {
|
||||
if (suffix !== undefined)
|
||||
validateString(suffix, 'ext');
|
||||
validateString(path, 'path');
|
||||
let start = 0;
|
||||
let end = -1;
|
||||
@ -763,10 +763,10 @@ const win32 = {
|
||||
start = 2;
|
||||
}
|
||||
|
||||
if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {
|
||||
if (ext === path)
|
||||
if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) {
|
||||
if (suffix === path)
|
||||
return '';
|
||||
let extIdx = ext.length - 1;
|
||||
let extIdx = suffix.length - 1;
|
||||
let firstNonSlashEnd = -1;
|
||||
for (let i = path.length - 1; i >= start; --i) {
|
||||
const code = StringPrototypeCharCodeAt(path, i);
|
||||
@ -786,7 +786,7 @@ const win32 = {
|
||||
}
|
||||
if (extIdx >= 0) {
|
||||
// Try to match the explicit extension
|
||||
if (code === StringPrototypeCharCodeAt(ext, extIdx)) {
|
||||
if (code === StringPrototypeCharCodeAt(suffix, extIdx)) {
|
||||
if (--extIdx === -1) {
|
||||
// We matched the extension, so mark this as the end of our path
|
||||
// component
|
||||
@ -1300,22 +1300,22 @@ const posix = {
|
||||
|
||||
/**
|
||||
* @param {string} path
|
||||
* @param {string} [ext]
|
||||
* @param {string} [suffix]
|
||||
* @returns {string}
|
||||
*/
|
||||
basename(path, ext) {
|
||||
if (ext !== undefined)
|
||||
validateString(ext, 'ext');
|
||||
basename(path, suffix) {
|
||||
if (suffix !== undefined)
|
||||
validateString(suffix, 'ext');
|
||||
validateString(path, 'path');
|
||||
|
||||
let start = 0;
|
||||
let end = -1;
|
||||
let matchedSlash = true;
|
||||
|
||||
if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {
|
||||
if (ext === path)
|
||||
if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) {
|
||||
if (suffix === path)
|
||||
return '';
|
||||
let extIdx = ext.length - 1;
|
||||
let extIdx = suffix.length - 1;
|
||||
let firstNonSlashEnd = -1;
|
||||
for (let i = path.length - 1; i >= 0; --i) {
|
||||
const code = StringPrototypeCharCodeAt(path, i);
|
||||
@ -1335,7 +1335,7 @@ const posix = {
|
||||
}
|
||||
if (extIdx >= 0) {
|
||||
// Try to match the explicit extension
|
||||
if (code === StringPrototypeCharCodeAt(ext, extIdx)) {
|
||||
if (code === StringPrototypeCharCodeAt(suffix, extIdx)) {
|
||||
if (--extIdx === -1) {
|
||||
// We matched the extension, so mark this as the end of our path
|
||||
// component
|
||||
|
Loading…
x
Reference in New Issue
Block a user