-- Utility function to get IMAP username from pass function get_imap_username(account) local str = io.popen('pass institutions/' .. account .. '/id'):read() return str; end -- Utility function to get IMAP password from pass function get_imap_password(account) local str = io.popen('pass institutions/' .. account .. '/pass'):read() return str; end -- https://stackoverflow.com/a/11402486 function case_insensitive_pattern(pattern) -- find an optional '%' (group 1) followed by any character (group 2) local p = pattern:gsub("(%%?)(.)", function(percent, letter) if percent ~= "" or not letter:match("%a") then -- if the '%' matched, or `letter` is not a letter, return "as is" return percent .. letter else -- else, return a case-insensitive character class of the matched letter return string.format("[%s%s]", letter:lower(), letter:upper()) end end) return p end