aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/core/result.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-03-06 21:48:29 +0100
committerGitHub <noreply@github.com>2022-03-06 21:48:29 +0100
commitdc39ce90f99a77699317bd31d95ce970690a4624 (patch)
tree901e89bacca9b0d370c694fcd5a88cf2e1ae768e /lua/nvim-lsp-installer/core/result.lua
parentfix(fetch): shift args to put callback arg last (diff)
downloadmason-dc39ce90f99a77699317bd31d95ce970690a4624.tar
mason-dc39ce90f99a77699317bd31d95ce970690a4624.tar.gz
mason-dc39ce90f99a77699317bd31d95ce970690a4624.tar.bz2
mason-dc39ce90f99a77699317bd31d95ce970690a4624.tar.lz
mason-dc39ce90f99a77699317bd31d95ce970690a4624.tar.xz
mason-dc39ce90f99a77699317bd31d95ce970690a4624.tar.zst
mason-dc39ce90f99a77699317bd31d95ce970690a4624.zip
run server installation in async execution context (#525)
Diffstat (limited to 'lua/nvim-lsp-installer/core/result.lua')
-rw-r--r--lua/nvim-lsp-installer/core/result.lua31
1 files changed, 31 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/core/result.lua b/lua/nvim-lsp-installer/core/result.lua
index 33623c66..a94ffe52 100644
--- a/lua/nvim-lsp-installer/core/result.lua
+++ b/lua/nvim-lsp-installer/core/result.lua
@@ -32,6 +32,14 @@ function Result:get_or_nil()
end
end
+function Result:get_or_throw()
+ if self:is_success() then
+ return self.value
+ else
+ error(self.value.error, 2)
+ end
+end
+
function Result:err_or_nil()
if self:is_failure() then
return self.value.error
@@ -46,4 +54,27 @@ function Result:is_success()
return getmetatable(self.value) ~= Failure
end
+---@param mapper_fn fun(value: any): any
+function Result:map(mapper_fn)
+ if self:is_success() then
+ return Result.success(mapper_fn(self.value))
+ else
+ return self
+ end
+end
+
+---@param mapper_fn fun(value: any): any
+function Result:map_catching(mapper_fn)
+ if self:is_success() then
+ local ok, result = pcall(mapper_fn, self.value)
+ if ok then
+ return Result.success(result)
+ else
+ return Result.failure(result)
+ end
+ else
+ return self
+ end
+end
+
return Result