fix(vim.text): remove assert from vim.text.hexdecode

Instead, return nil plus an error message if the input is invalid.
This commit is contained in:
Gregory Anders
2024-05-30 19:57:47 -05:00
parent d24f3d055a
commit 4cff418564
2 changed files with 10 additions and 5 deletions

View File

@ -4385,8 +4385,9 @@ vim.text.hexdecode({enc}) *vim.text.hexdecode()*
Parameters: ~
• {enc} (`string`) String to decode
Return: ~
(`string`) Decoded string
Return (multiple): ~
(`string?`) Decoded string
(`string?`) Error message, if any
vim.text.hexencode({str}) *vim.text.hexencode()*
Hex encode a string.

View File

@ -18,15 +18,19 @@ end
--- Hex decode a string.
---
--- @param enc string String to decode
--- @return string : Decoded string
--- @return string? : Decoded string
--- @return string? : Error message, if any
function M.hexdecode(enc)
assert(#enc % 2 == 0, 'string must have an even number of hex characters')
if #enc % 2 ~= 0 then
return nil, 'string must have an even number of hex characters'
end
local str = {} ---@type string[]
for i = 1, #enc, 2 do
local n = assert(tonumber(enc:sub(i, i + 1), 16))
str[#str + 1] = string.char(n)
end
return table.concat(str)
return table.concat(str), nil
end
return M