diff options
| author | ruki <[email protected]> | 2015-05-16 19:19:39 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-05-16 19:19:39 +0800 |
| commit | 94c489e0b0c07d8187d96ca7659357c5c71d5944 (patch) | |
| tree | 6e14f916b501f6e9a1c045cd05e67c9f32335485 /xmake/scripts/base/preprocessor.lua | |
| parent | 5fefc1a0bc38a6917c38590d08bf14a4c43dd886 (diff) | |
add script for the configure value
Diffstat (limited to 'xmake/scripts/base/preprocessor.lua')
| -rw-r--r-- | xmake/scripts/base/preprocessor.lua | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/xmake/scripts/base/preprocessor.lua b/xmake/scripts/base/preprocessor.lua index ed651932e..7f2cd8c02 100644 --- a/xmake/scripts/base/preprocessor.lua +++ b/xmake/scripts/base/preprocessor.lua @@ -24,13 +24,38 @@ local preprocessor = preprocessor or {} -- filter value -function preprocessor._filter(value, filter) +function preprocessor._filter(env, value, filter) -- the value is string? - if filter and type(value) == "string" then + if type(value) == "string" then - -- replace $(variable) - value = value:gsub("%$%((.*)%)", filter) + -- init + local _v = nil + local _n = 0 + + -- replace it for filter + if filter then + -- replace $(variable) + _v, _n = value:gsub("%$%((.*)%)", filter) + end + + -- replace it for script + if _n == 0 then + _v, _n = value:gsub("%[(.*)%]", function (v) + + -- load the script + local script = assert(loadstring(v)) + + -- bind the envirnoment + setfenv(script, env) + + -- done it + return script() + end) + end + + -- update value + value = _v end -- ok @@ -64,11 +89,11 @@ function preprocessor._register(env, names, filter) _current[name] = nil elseif table.getn(arg) == 1 then -- save only one argument - _current[name] = preprocessor._filter(arg[1], filter) + _current[name] = preprocessor._filter(env, arg[1], filter) else -- save all arguments for i, v in ipairs(arg) do - _current[name][i] = preprocessor._filter(v, filter) + _current[name][i] = preprocessor._filter(env, v, filter) end end end |
