Files
winamp/Src/external_dependencies/openmpt-trunk/include/premake/src/base/global.lua
2024-09-24 14:54:57 +02:00

114 lines
2.1 KiB
Lua
Vendored

---
-- global.lua
-- The global container holds workspaces and rules.
-- Copyright (c) 2014-2015 Jason Perkins and the Premake project
---
local p = premake
p.global = p.api.container("global")
local global = p.global
---
-- Create a new global container instance.
---
function global.new(name)
return p.container.new(p.global, name)
end
---
-- Bakes the global scope.
---
function global.bake(self)
p.container.bakeChildren(self)
end
---
-- Iterate over the collection of rules in a session.
--
-- @returns
-- An iterator function.
---
function global.eachRule()
local root = p.api.rootContainer()
return p.container.eachChild(root, p.rule)
end
---
-- Iterate over the collection of workspaces in a session.
--
-- @returns
-- A workspace iterator function.
---
function global.eachWorkspace()
local root = p.api.rootContainer()
return p.container.eachChild(root, p.workspace)
end
p.alias(global, "eachWorkspace", "eachSolution")
---
-- Retrieve a rule by name or index.
--
-- @param key
-- The rule key, either a string name or integer index.
-- @returns
-- The rule with the provided key.
---
function global.getRule(key)
local root = p.api.rootContainer()
return root.rules[key]
end
---
-- Retrieve the rule to applies to the provided file name, if any such
-- rule exists.
--
-- @param fname
-- The name of the file.
-- @param rules
-- A list of rule names to be included in the search. If not specified,
-- all rules will be checked.
-- @returns
-- The rule, is one has been registered, or nil.
---
function global.getRuleForFile(fname, rules)
for rule in global.eachRule() do
if not rules or table.contains(rules, rule.name) then
if path.hasextension(fname, rule.fileextension) then
return rule
end
end
end
end
---
-- Retrieve a workspace by name or index.
--
-- @param key
-- The workspace key, either a string name or integer index.
-- @returns
-- The workspace with the provided key.
---
function global.getWorkspace(key)
local root = p.api.rootContainer()
return root.workspaces[key]
end
p.alias(global, "getWorkspace", "getSolution")