local M = {} function M.get_path_type(path) if path:sub(1, 1) == '/' then return 'absolute' elseif path:sub(1, 1) == '~' then return 'home' else return 'relative' end end function M.resolve(filepath, current_file) local path_type = M.get_path_type(filepath) if path_type == 'relative' then local base = current_file and vim.fs.dirname(current_file) or vim.fs.dirname(vim.api.nvim_buf_get_name(0)) filepath = vim.fs.joinpath(base, filepath) end return vim.fs.normalize(filepath) end function M.strip_file_protocol(url) return url:gsub('^file://', '') end local ALLOWED_SCHEMES = { http = true, https = true, file = true, } function M.validate_url_scheme(url) local scheme = url:match('^([a-zA-Z]+)://') if scheme and not ALLOWED_SCHEMES[scheme:lower()] then return false, string.format('URL scheme not allowed: %s', scheme) end return true, nil end return M