diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2023-11-30 20:35:25 +0000 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2023-11-30 20:35:25 +0000 |
commit | 1b7b916b7631ddf73c38e3a0070d64e4636cb2f3 (patch) | |
tree | cd08258054db80bb9a11b1061bb091c70b76926a /runtime/lua/vim/text.lua | |
parent | eaa89c11d0f8aefbb512de769c6c82f61a8baca3 (diff) | |
parent | 4a8bf24ac690004aedf5540fa440e788459e5e34 (diff) | |
download | rneovim-aucmd_textputpost.tar.gz rneovim-aucmd_textputpost.tar.bz2 rneovim-aucmd_textputpost.zip |
Merge remote-tracking branch 'upstream/master' into aucmd_textputpostaucmd_textputpost
Diffstat (limited to 'runtime/lua/vim/text.lua')
-rw-r--r-- | runtime/lua/vim/text.lua | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/runtime/lua/vim/text.lua b/runtime/lua/vim/text.lua new file mode 100644 index 0000000000..cfb0f9b821 --- /dev/null +++ b/runtime/lua/vim/text.lua @@ -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 |