# Removes the last file extension from a filename or path.
#
# Examples:
# document.pdf -> document
# archive.tar.gz -> archive.tar
# photo.jpg -> photo
# README -> README
# /tmp/file.txt -> /tmp/file
#
# Parameters:
# file_path - A filename or full path.
#
# Returns:
# The filename/path without its last extension.
def remove_file_extension(file_path)
raise ArgumentError, "file_path cannot be empty" if file_path.nil? || file_path.empty?
extension = File.extname(file_path)
# Return the original path if no extension exists.
return file_path if extension.empty?
file_path.delete_suffix(extension)
end
# Example usage
puts remove_file_extension("document.pdf")
puts remove_file_extension("archive.tar.gz")
puts remove_file_extension("/tmp/file.txt")
puts remove_file_extension("README")
# run:
#
# document
# archive.tar
# /tmp/file
# README
#