summaryrefslogtreecommitdiffstats
path: root/lua/inbox/utils.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/inbox/utils.lua')
-rw-r--r--lua/inbox/utils.lua27
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