diff options
| author | William Boman <william@redwill.se> | 2023-01-02 06:52:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-02 06:52:45 +0100 |
| commit | ee75fcd37eaecbc5db479eb648c41a7d11144e32 (patch) | |
| tree | 6c5f21b1836452808f0cab19e71911bcffa222f4 /lua/mason-core/installer | |
| parent | feat(functional): add split_every and default_to (#835) (diff) | |
| download | mason-ee75fcd37eaecbc5db479eb648c41a7d11144e32.tar mason-ee75fcd37eaecbc5db479eb648c41a7d11144e32.tar.gz mason-ee75fcd37eaecbc5db479eb648c41a7d11144e32.tar.bz2 mason-ee75fcd37eaecbc5db479eb648c41a7d11144e32.tar.lz mason-ee75fcd37eaecbc5db479eb648c41a7d11144e32.tar.xz mason-ee75fcd37eaecbc5db479eb648c41a7d11144e32.tar.zst mason-ee75fcd37eaecbc5db479eb648c41a7d11144e32.zip | |
refactor(expr): rename to interpolate (#836)
Diffstat (limited to 'lua/mason-core/installer')
| -rw-r--r-- | lua/mason-core/installer/registry/expr.lua | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/lua/mason-core/installer/registry/expr.lua b/lua/mason-core/installer/registry/expr.lua index 539b557c..c6a6aafe 100644 --- a/lua/mason-core/installer/registry/expr.lua +++ b/lua/mason-core/installer/registry/expr.lua @@ -39,12 +39,13 @@ end ---@param str string ---@param ctx table<string, any> -function M.eval(str, ctx) +function M.interpolate(str, ctx) ctx = shallow_clone(ctx) return Result.pcall(function() setmetatable(ctx, { __index = FILTERS }) return _.gsub("{{([^}]+)}}", function(expr) local components = parse_expr(expr) + local value = assert( setfenv( assert( @@ -55,18 +56,17 @@ function M.eval(str, ctx) )(), ("Value is nil: %q"):format(components.value_expr) ) - return _.reduce( - _.apply_to, - value, - _.map(function(filter_expr) - local filter = setfenv( - assert(loadstring("return " .. filter_expr), ("Failed to parse filter: %q"):format(filter_expr)), - ctx - )() - assert(type(filter) == "function", ("Invalid filter expression: %q"):format(filter_expr)) - return filter - end, components.filters) - ) + + local filters = _.map(function(filter_expr) + local filter = setfenv( + assert(loadstring("return " .. filter_expr), ("Failed to parse filter: %q"):format(filter_expr)), + ctx + )() + assert(type(filter) == "function", ("Invalid filter expression: %q"):format(filter_expr)) + return filter + end, components.filters) + + return _.reduce(_.apply_to, value, filters) end, str) end) end @@ -80,7 +80,7 @@ function M.tbl_interpolate(tbl, ctx) local interpolated = {} for k, v in pairs(tbl) do if type(v) == "string" then - interpolated[k] = try(M.eval(v, ctx)) + interpolated[k] = try(M.interpolate(v, ctx)) elseif type(v) == "table" then interpolated[k] = try(M.tbl_interpolate(v, ctx)) else |
