aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-core/optional.lua10
1 files changed, 10 insertions, 0 deletions
diff --git a/lua/mason-core/optional.lua b/lua/mason-core/optional.lua
index cc40da77..d5055c9c 100644
--- a/lua/mason-core/optional.lua
+++ b/lua/mason-core/optional.lua
@@ -62,6 +62,16 @@ function Optional:or_else_get(supplier)
end
end
+---@param supplier fun(value: any): Optional
+---@return Optional
+function Optional:and_then(supplier)
+ if self:is_present() then
+ return supplier(self._value)
+ else
+ return self
+ end
+end
+
---@param supplier fun(): Optional
---@return Optional
function Optional:or_(supplier)