aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/core/result.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-07-06 19:41:43 +0200
committerWilliam Boman <william@redwill.se>2022-07-07 00:39:59 +0200
commit5f634e0c37e723fc0c33e06b4fd5c2180178db40 (patch)
treefa4f09363adefa8259e23e4d1ea036db628b1243 /lua/nvim-lsp-installer/core/result.lua
parentfeat(health): use stderr for java version, also check for JAVA_HOME (#765) (diff)
downloadmason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.gz
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.bz2
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.lz
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.xz
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.zst
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.zip
mason.nvim
Diffstat (limited to 'lua/nvim-lsp-installer/core/result.lua')
-rw-r--r--lua/nvim-lsp-installer/core/result.lua152
1 files changed, 0 insertions, 152 deletions
diff --git a/lua/nvim-lsp-installer/core/result.lua b/lua/nvim-lsp-installer/core/result.lua
deleted file mode 100644
index 132e2758..00000000
--- a/lua/nvim-lsp-installer/core/result.lua
+++ /dev/null
@@ -1,152 +0,0 @@
----@class Failure
----@field error any
-local Failure = {}
-Failure.__index = Failure
-
-function Failure.new(error)
- return setmetatable({ error = error }, Failure)
-end
-
----@class Result
----@field value any
-local Result = {}
-Result.__index = Result
-
-function Result.new(value)
- return setmetatable({
- value = value,
- }, Result)
-end
-
-function Result.success(value)
- return Result.new(value)
-end
-
-function Result.failure(error)
- return Result.new(Failure.new(error))
-end
-
-function Result:get_or_nil()
- if self:is_success() then
- return self.value
- end
-end
-
-function Result:get_or_else(value)
- if self:is_success() then
- return self.value
- else
- return value
- end
-end
-
----@param exception any @(optional) The exception to throw if the result is a failure.
-function Result:get_or_throw(exception)
- if self:is_success() then
- return self.value
- else
- if exception ~= nil then
- error(exception, 2)
- else
- error(self.value.error, 2)
- end
- end
-end
-
-function Result:err_or_nil()
- if self:is_failure() then
- return self.value.error
- end
-end
-
-function Result:is_failure()
- return getmetatable(self.value) == Failure
-end
-
-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_err(mapper_fn)
- if self:is_failure() then
- return Result.failure(mapper_fn(self.value.error))
- 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
-
----@param recover_fn fun(value: any): any
-function Result:recover(recover_fn)
- if self:is_failure() then
- return Result.success(recover_fn(self:err_or_nil()))
- else
- return self
- end
-end
-
----@param recover_fn fun(value: any): any
-function Result:recover_catching(recover_fn)
- if self:is_failure() then
- local ok, value = pcall(recover_fn, self:err_or_nil())
- if ok then
- return Result.success(value)
- else
- return Result.failure(value)
- end
- else
- return self
- end
-end
-
----@param fn fun(value: any): any
-function Result:on_failure(fn)
- if self:is_failure() then
- fn(self.value.error)
- end
- return self
-end
-
----@param fn fun(value: any): any
-function Result:on_success(fn)
- if self:is_success() then
- fn(self.value)
- end
- return self
-end
-
----@param fn fun(): any
----@return Result
-function Result.run_catching(fn)
- local ok, result = pcall(fn)
- if ok then
- return Result.success(result)
- else
- return Result.failure(result)
- end
-end
-
-return Result