Skip to content
Permalink
Browse files
path: change basename() argument from ext to suffix
Closes: #44773
PR-URL: #44774
Fixes: #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>
  • Loading branch information
Trott authored and danielleadams committed Oct 5, 2022
1 parent e9d572a commit fd5c26b8db350184d437002c181c24f7235607fa
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 21 deletions.
@@ -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`
@@ -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

0 comments on commit fd5c26b

Please sign in to comment.