summaryrefslogtreecommitdiff
path: root/xmake/core/base/interpreter.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2016-01-21 22:18:52 +0800
committerruki <[email protected]>2016-02-15 19:10:25 +0800
commit0384d6aee3e0a5c1f86c8d60638d8228acb53601 (patch)
tree23eff130644eddf35ada4ebe08299522ed117a65 /xmake/core/base/interpreter.lua
parentcc07a77f59a0024698b8261f866010c8b72481fe (diff)
reimpl project
Diffstat (limited to 'xmake/core/base/interpreter.lua')
-rw-r--r--xmake/core/base/interpreter.lua45
1 files changed, 38 insertions, 7 deletions
diff --git a/xmake/core/base/interpreter.lua b/xmake/core/base/interpreter.lua
index b77979377..4de222be5 100644
--- a/xmake/core/base/interpreter.lua
+++ b/xmake/core/base/interpreter.lua
@@ -285,7 +285,7 @@ function interpreter._filter(self, values, filter)
end
-- make results
-function interpreter._make(self, scope_kind, remove_repeat, filter)
+function interpreter._make(self, scope_kind, remove_repeat)
-- check
assert(self and self._PRIVATE and scope_kind)
@@ -303,6 +303,9 @@ function interpreter._make(self, scope_kind, remove_repeat, filter)
-- the root scope
local scope_root = scopes._ROOT[scope_kind]
+ -- the filter
+ local filter = self._PRIVATE._FILTER
+
-- make results
local results = {}
for scope_name, scope in pairs(scope_for_kind) do
@@ -342,7 +345,7 @@ function interpreter._make(self, scope_kind, remove_repeat, filter)
end
-- filter values
- if filter and type(filter) == "function" then
+ if filter then
values = self:_filter(values, filter)
end
@@ -389,7 +392,7 @@ function interpreter.init(rootdir)
end
-- load results
-function interpreter.load(self, file, scope_kind, remove_repeat, filter)
+function interpreter.load(self, file, scope_kind, remove_repeat)
-- check
assert(self and self._PUBLIC and self._PRIVATE and file and scope_kind)
@@ -419,7 +422,7 @@ function interpreter.load(self, file, scope_kind, remove_repeat, filter)
end
-- make results
- return self:_make(scope_kind, remove_repeat, filter)
+ return self:_make(scope_kind, remove_repeat)
end
-- get mtimes
@@ -432,6 +435,17 @@ function interpreter.mtimes(self)
return self._PRIVATE._MTIMES
end
+-- set filter
+function interpreter.filter_set(self, filter)
+
+ -- check
+ assert(self and self._PRIVATE)
+ assert(filter == nil or type(filter) == "function")
+
+ -- set it
+ self._PRIVATE._FILTER = filter
+end
+
-- register api
function interpreter.api_register(self, name, func)
@@ -494,7 +508,7 @@ function interpreter.api_register_set_scope(self, ...)
-- check
if not scopes[scope_kind] then
utils.error("set_%s(\"%s\") failed, %s not found!", scope_kind, scope_name, scope_name)
- utils.error("please uses add_%s(\"%s\") first!", scope_name)
+ utils.error("please uses add_%s(\"%s\") first!", scope_kind, scope_name)
utils.abort()
end
@@ -525,8 +539,8 @@ function interpreter.api_register_add_scope(self, ...)
-- check
if scopes[scope_kind] then
- utils.error("add_%s(\"%s\") failed, %s have been defined!", scope_name, scope_name)
- utils.error("please uses set_%s(\"%s\")!", scope_name)
+ utils.error("add_%s(\"%s\") failed, %s have been defined!", scope_kind, scope_name, scope_name)
+ utils.error("please uses set_%s(\"%s\")!", scope_kind, scope_name)
utils.abort()
end
@@ -676,5 +690,22 @@ function interpreter.api_builtin_add_subfiles(self, ...)
self:_api_builtin_add_subdirfiles(false, ...)
end
+-- call api
+function interpreter.api_call(self, apiname, ...)
+
+ -- check
+ assert(self and self._PUBLIC and apiname)
+
+ -- get api function
+ local apifunc = self._PUBLIC[apiname]
+ if not apifunc then
+ utils.error("call %s() failed, the api %s not found!", apiname)
+ utils.abort()
+ end
+
+ -- call api function
+ apifunc(self, ...)
+end
+
-- return module: interpreter
return interpreter