fix(fs): use generics for better typing

This commit is contained in:
altermo 2024-03-06 17:18:00 +01:00 committed by Lewis Russell
parent 0101bdaa1a
commit ae5095cac9
2 changed files with 9 additions and 6 deletions

View File

@ -2848,7 +2848,7 @@ vim.fs.basename({file}) *vim.fs.basename()*
Return the basename of the given path
Parameters: ~
• {file} (`string`) Path
• {file} (`string?`) Path
Return: ~
(`string?`) Basename of {file}
@ -2876,7 +2876,7 @@ vim.fs.dirname({file}) *vim.fs.dirname()*
Return the parent directory of the given path
Parameters: ~
• {file} (`string`) Path
• {file} (`string?`) Path
Return: ~
(`string?`) Parent directory of {file}

View File

@ -39,8 +39,9 @@ end
--- Return the parent directory of the given path
---
---@param file (string) Path
---@return string|nil Parent directory of {file}
---@generic T : string|nil
---@param file T Path
---@return T Parent directory of {file}
function M.dirname(file)
if file == nil then
return nil
@ -53,6 +54,7 @@ function M.dirname(file)
elseif file == '/' or file:match('^/[^/]+$') then
return '/'
end
---@type string
local dir = file:match('[/\\]$') and file:sub(1, #file - 1) or file:match('^([/\\]?.+)[/\\]')
if iswin and dir:match('^%w:$') then
return dir .. '/'
@ -62,8 +64,9 @@ end
--- Return the basename of the given path
---
---@param file string Path
---@return string|nil Basename of {file}
---@generic T : string|nil
---@param file T Path
---@return T Basename of {file}
function M.basename(file)
if file == nil then
return nil