mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
feat: add vim.text module (#26069)
This commit is contained in:
32
runtime/lua/vim/text.lua
Normal file
32
runtime/lua/vim/text.lua
Normal file
@ -0,0 +1,32 @@
|
||||
--- Text processing functions.
|
||||
|
||||
local M = {}
|
||||
|
||||
--- Hex encode a string.
|
||||
---
|
||||
--- @param str string String to encode
|
||||
--- @return string Hex encoded string
|
||||
function M.hexencode(str)
|
||||
local bytes = { str:byte(1, #str) }
|
||||
local enc = {} ---@type string[]
|
||||
for i = 1, #bytes do
|
||||
enc[i] = string.format('%02X', bytes[i])
|
||||
end
|
||||
return table.concat(enc)
|
||||
end
|
||||
|
||||
--- Hex decode a string.
|
||||
---
|
||||
--- @param enc string String to decode
|
||||
--- @return string Decoded string
|
||||
function M.hexdecode(enc)
|
||||
assert(#enc % 2 == 0, 'string must have an even number of hex characters')
|
||||
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)
|
||||
end
|
||||
|
||||
return M
|
Reference in New Issue
Block a user