diff options
| author | ruki <[email protected]> | 2016-01-21 22:18:52 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2016-02-15 19:10:25 +0800 |
| commit | 0384d6aee3e0a5c1f86c8d60638d8228acb53601 (patch) | |
| tree | 23eff130644eddf35ada4ebe08299522ed117a65 /xmake/core/base/interpreter.lua | |
| parent | cc07a77f59a0024698b8261f866010c8b72481fe (diff) | |
reimpl project
Diffstat (limited to 'xmake/core/base/interpreter.lua')
| -rw-r--r-- | xmake/core/base/interpreter.lua | 45 |
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 |
