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 committed 2024-05-31 08:25:35 -05:00
1 parent d24f3d055a
commit 4cff418564
2 files changed
+10 -5

No files matched your search

+3 -2
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.
+7 -3
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