summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-09-09 14:41:57 +0800
committerGitHub <[email protected]>2024-09-09 14:41:57 +0800
commit1dfec9070bd8116c1910da1eb165ed7981e114bf (patch)
tree0d87dde82e543671f128dd13395c6c33a699b43a
parent8f0151d479ad2805623c4855a99c8a2390165b07 (diff)
parenta883d8f9e94287a46c01da2814ec369a02741d7b (diff)
Merge pull request #5588 from xmake-io/vsxmake
optimize vsxmake render #5573
-rw-r--r--xmake/plugins/project/vsxmake/render.lua33
1 files changed, 18 insertions, 15 deletions
diff --git a/xmake/plugins/project/vsxmake/render.lua b/xmake/plugins/project/vsxmake/render.lua
index 6fb1cbc57..96062601f 100644
--- a/xmake/plugins/project/vsxmake/render.lua
+++ b/xmake/plugins/project/vsxmake/render.lua
@@ -18,14 +18,16 @@
-- @file render.lua
--
+-- imports
+import("lib.detect.find_file")
+
function _fill(opt, params)
return function(match)
local imp = match:match("^Import%((.+)%)$")
if imp then
- local funcs = os.files(path.join(opt.templatedir, imp .. "(*)"))
- assert(#funcs == 1)
- local func = funcs[1]
- local args = path.filename(func):match("%((.+)%)$"):split(",")
+ local func = find_file(imp .. "(*)", opt.templatedir)
+ assert(func)
+ local args = path.filename(func):match("%((.+)%)$"):split(",", {plain = true})
return _render(func, opt, args)
end
return opt.paramsprovider(match, params) or "<Not Provided>"
@@ -34,27 +36,24 @@ end
function _cfill(opt, params)
return function(match)
- local tmp = match:split(";", {strict = true})
+ local tmp = match:split(";", {strict = true, plain = true})
assert(#tmp == 2 or #tmp == 3)
local cond = tmp[1]
local value1 = tmp[2]
local value2 = ""
-
+
if #tmp == 3 then
value2 = tmp[3]
end
-
- tmp = cond:split("=")
+ tmp = cond:split("=", {plain = true})
assert(#tmp == 2)
local k = tmp[1]:trim()
local v = tmp[2]:trim()
-
if opt.paramsprovider(k, params) == v then
return value1
end
-
return value2
end
end
@@ -69,11 +68,9 @@ function _expand(params)
else
local newr = {}
for _, c in ipairs(v) do
- local rcopy = {}
- for i, p in ipairs(r) do
- rcopy[i] = p .. "\0" .. c
+ for _, p in ipairs(r) do
+ table.insert(newr, p .. "\0" .. c)
end
- newr = table.join(newr, rcopy)
end
r = newr
end
@@ -96,6 +93,12 @@ function _render(templatepath, opt, args)
end
function main(templatepath, pattern, cpattern, paramsprovider)
- local opt = { pattern = pattern, cpattern = cpattern, paramsprovider = paramsprovider, templatedir = path.directory(templatepath) }
+ local opt = {
+ pattern = pattern,
+ cpattern = cpattern,
+ paramsprovider = paramsprovider,
+ templatedir = path.directory(templatepath)
+ }
return _render(templatepath, opt, {})
end
+