diff options
| author | William Boman <william@redwill.se> | 2022-03-06 21:48:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-06 21:48:29 +0100 |
| commit | dc39ce90f99a77699317bd31d95ce970690a4624 (patch) | |
| tree | 901e89bacca9b0d370c694fcd5a88cf2e1ae768e /lua/nvim-lsp-installer/core/result.lua | |
| parent | fix(fetch): shift args to put callback arg last (diff) | |
| download | mason-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.lua | 31 |
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 |
