aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-07-22 14:06:39 +0200
committerGitHub <noreply@github.com>2022-07-22 12:06:39 +0000
commit09f6e0bb3390a290bf2168c849bc8fb4b3a77af1 (patch)
tree2eb9fd9916cee797148d780a0b05fb9f8fe36612 /lua/mason-core/functional
parentdocs: single quotes for vim-plug (#112) (diff)
downloadmason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar
mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.gz
mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.bz2
mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.lz
mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.xz
mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.zst
mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.zip
feat: minimize modules required by .setup(), lazily require functional modules (#113)
Diffstat (limited to 'lua/mason-core/functional')
-rw-r--r--lua/mason-core/functional/init.lua28
1 files changed, 19 insertions, 9 deletions
diff --git a/lua/mason-core/functional/init.lua b/lua/mason-core/functional/init.lua
index 97865f05..8d17a572 100644
--- a/lua/mason-core/functional/init.lua
+++ b/lua/mason-core/functional/init.lua
@@ -1,13 +1,23 @@
local _ = {}
+local function lazy_require(module)
+ return setmetatable({}, {
+ __index = function(m, k)
+ return function(...)
+ return require(module)[k](...)
+ end
+ end,
+ })
+end
+
-- data
-local data = require "mason-core.functional.data"
+local data = lazy_require "mason-core.functional.data"
_.table_pack = data.table_pack
_.enum = data.enum
_.set_of = data.set_of
-- function
-local fun = require "mason-core.functional.function"
+local fun = lazy_require "mason-core.functional.function"
_.curryN = fun.curryN
_.compose = fun.compose
_.partial = fun.partial
@@ -19,7 +29,7 @@ _.memoize = fun.memoize
_.lazy = fun.lazy
-- list
-local list = require "mason-core.functional.list"
+local list = lazy_require "mason-core.functional.list"
_.reverse = list.reverse
_.list_not_nil = list.list_not_nil
_.list_copy = list.list_copy
@@ -42,13 +52,13 @@ _.uniq_by = list.uniq_by
_.join = list.join
-- relation
-local relation = require "mason-core.functional.relation"
+local relation = lazy_require "mason-core.functional.relation"
_.equals = relation.equals
_.prop_eq = relation.prop_eq
_.prop_satisfies = relation.prop_satisfies
-- logic
-local logic = require "mason-core.functional.logic"
+local logic = lazy_require "mason-core.functional.logic"
_.all_pass = logic.all_pass
_.any_pass = logic.any_pass
_.if_else = logic.if_else
@@ -57,7 +67,7 @@ _.complement = logic.complement
_.cond = logic.cond
-- number
-local number = require "mason-core.functional.number"
+local number = lazy_require "mason-core.functional.number"
_.negate = number.negate
_.gt = number.gt
_.gte = number.gte
@@ -67,7 +77,7 @@ _.inc = number.inc
_.dec = number.dec
-- string
-local string = require "mason-core.functional.string"
+local string = lazy_require "mason-core.functional.string"
_.matches = string.matches
_.format = string.format
_.split = string.split
@@ -77,7 +87,7 @@ _.dedent = string.dedent
_.starts_with = string.starts_with
-- table
-local tbl = require "mason-core.functional.table"
+local tbl = lazy_require "mason-core.functional.table"
_.prop = tbl.prop
_.pick = tbl.pick
_.keys = tbl.keys
@@ -86,7 +96,7 @@ _.to_pairs = tbl.to_pairs
_.invert = tbl.invert
-- type
-local typ = require "mason-core.functional.type"
+local typ = lazy_require "mason-core.functional.type"
_.is_nil = typ.is_nil
_.is = typ.is