diff options
Diffstat (limited to 'lua/inbox/utils.lua')
-rw-r--r-- | lua/inbox/utils.lua | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lua/inbox/utils.lua b/lua/inbox/utils.lua index 3b84b83..c5954a8 100644 --- a/lua/inbox/utils.lua +++ b/lua/inbox/utils.lua @@ -111,6 +111,8 @@ function M.set_signs(bufnr, signs) end end +---@param json string +---@return table data function M.json_decode(json) local results = {} if json and json ~= "" then @@ -119,4 +121,29 @@ function M.json_decode(json) return results end +---@param bufnr integer +---@return string? maildir maildir name +---@return string? id entry id +function M.parse_scheme(bufnr) + local bufname = vim.api.nvim_buf_get_name(bufnr or 0) + + local _, init, maildir = bufname:find("maildir://([^:]+)") + local _, _, id = bufname:find(":(.*)", init) + + return maildir, id +end + +function M.stateful_iter(table, wrap) + local k + local s_k, s_v = next(table) + return function() + local v + k, v = next(table, k) + if k == nil and wrap then + k, v = s_k, s_v + end + return k, v + end +end + return M |