Project

General

Profile

Actions

Bug #15267

closed

File.basename + File.extname does not restore the original name

Added by nobu (Nobuyoshi Nakada) over 5 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:89615]

Description

Related to #15224, I found the case File.basename(name, '.*')+File.extname(name) == File.basename(name) is not true.

name = 'file.'
File.basename(name, '.*') #=> "name"
File.extname(name) #=> ""

Both do not contain the last dot.

basename(1) seems to result in the base name with the dot, when stripping a wildcard suffix.

$ basename name. '.*'
name.

Files

file-basename-trailing-dot-15267.patch (1.96 KB) file-basename-trailing-dot-15267.patch jeremyevans0 (Jeremy Evans), 08/13/2019 11:48 PM

Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #15244: Method #extname return empty string if filename is dot ('.')ClosedActions
Actions #1

Updated by jeremyevans0 (Jeremy Evans) over 4 years ago

  • Related to Bug #15244: Method #extname return empty string if filename is dot ('.') added

Updated by jeremyevans0 (Jeremy Evans) over 4 years ago

Attached is a patch that fixes this issue. With the patch:

name = 'file.'
File.basename(name, '.*')
# => "file."
File.extname(name)
# => ""

Updated by naruse (Yui NARUSE) over 4 years ago

basename(1) seems to result in the base name with the dot, when stripping a wildcard suffix.

basename(1) doesn't handle wildcard.
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/basename.html

Updated by akr (Akira Tanaka) over 4 years ago

I think we should change File.extname instead of File.basename, as:

File.basename("name.", ".*") #=> "name"
File.extname("name.") #=> "."

We can explain File.extname as:
File.extname(x) returns what File.basename(x, ".*") removes.

Actions #6

Updated by nobu (Nobuyoshi Nakada) over 4 years ago

  • Status changed from Open to Closed

Applied in changeset git|e169ad93f44e1944ecf7bb65133fd34e8b868ea8.


Fixed File.extname at a name ending with a dot

File.extname now returns a dot string at a name ending with a dot.
[Bug #15267]

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0