我为我的C软件添加了lua脚本支持,以便更轻松地扩展和添加新功能。
例如,我在文件夹中查找.lua文件。这些插件包含识别我的软件的功能,例如:
function GetName()
return "Youtube Search"
end
例如,“工作者职能”也是如此:
function Search(strTerm, SearchResult)
--SEACH YOUTUBE
SearchResult = MYRESULTS
end
这样,我的软件现在可以通过这个插件在youtube上搜索。
但是现在我遇到了问题,我无法找到合适的解决方案。有些插件需要配置系统,例如在这个Youtube插件中,它需要一个只返回WebM视频的属性。但是,一个liveLeak插件不需要这个属性。
在我的应用程序中,它应该能够解析插件需要的内容(2个整数和1个字符串),然后将其显示在列表中。
我怎样才能优雅地实施解决这些问题的解决方案?
答案 0 :(得分:2)
getSupportedConfigItems()
和setConfigItems(tbl)
等插件公开的一对函数(可选)怎么样?如果我正确理解你的问题(我必须承认,“2个整数和1个字符串”部分,我不明白),它可能看起来像这个YouTube插件:
function getSupportedConfigItems()
return {
showWebMOnly = {
type = 'boolean',
description = 'Show only WebM videos',
default = true
}
}
end
function setConfigItems(tbl)
for key, value in pairs(tbl) do
if key == 'showWebMOnly' then
-- ...
end
end
end
通过这种方式,您的应用程序可以编写为支持显示一些众所周知类型的首选项(由您定义,示例为布尔值)。应用程序会询问每个插件它可以支持哪些首选项,并显示这些选项。然后它会告诉插件选择了哪些选项,以及它们的值是什么。