diff options
| -rw-r--r-- | lua/mason-core/installer/compiler/expr.lua | 3 | ||||
| -rw-r--r-- | tests/mason-core/installer/compiler/expr_spec.lua | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lua/mason-core/installer/compiler/expr.lua b/lua/mason-core/installer/compiler/expr.lua index a07fc00d..cc5aa07a 100644 --- a/lua/mason-core/installer/compiler/expr.lua +++ b/lua/mason-core/installer/compiler/expr.lua @@ -95,6 +95,9 @@ function M.tbl_interpolate(tbl, ctx) return Result.try(function(try) local interpolated = {} for k, v in pairs(tbl) do + if type(k) == "string" then + k = try(M.interpolate(k, ctx)) + end if type(v) == "string" then interpolated[k] = try(M.interpolate(v, ctx)) elseif type(v) == "table" then diff --git a/tests/mason-core/installer/compiler/expr_spec.lua b/tests/mason-core/installer/compiler/expr_spec.lua index 944a5983..4f96c04f 100644 --- a/tests/mason-core/installer/compiler/expr_spec.lua +++ b/tests/mason-core/installer/compiler/expr_spec.lua @@ -270,4 +270,17 @@ describe("table interpolation", function() }, {}) ) end) + + it("should interpolate string keys", function() + assert.same( + Result.success { + ["a-1.2.3"] = "1.2.3", + [12] = "12", + }, + expr.tbl_interpolate({ + ["a-{{version}}"] = "{{version}}", + [12] = "12", + }, { version = "1.2.3" }) + ) + end) end) |
