我该如何为我的Lua扩展创建一个配置系统?

我为我的C软件添加了lua脚本支持,以便更容易地扩展和添加新功能。

例如,我在一个文件夹中查找.lua文件,这些插件包含函数来识别我的软件,例如:

function GetName()
    return "Youtube Search"
end

它也有“工作者函数”,例如:

function Search(strTerm, SearchResult)
   --SEACH YOUTUBE
    SearchResult = MYRESULTS
end

这样,我的软件现在可以通过此插件在youtube上搜索。

但是现在我有一个问题,我找不到一个合适的解决方案。例如,某些插件需要配置系统,例如在这个Youtube插件中,它需要一个仅返回WebM视频的属性。但是liveLeak插件不需要此属性。

在我的应用程序中,它应该能够解析插件需要的内容(2个整数和1个字符串),然后在列表中显示它。

我该如何优雅地实现一个解决方案来解决这些问题?

原文链接 https://stackoverflow.com/questions/6246688

点赞
stackoverflow用户4323
stackoverflow用户4323

如果像 getSupportedConfigItems()setConfigItems(tbl) 这样的插件可以选择性地公开一对函数,意下如何?如果我理解您的问题正确(我必须承认,“2个整数和1个字符串”的部分我不理解),则 YouTube 插件可以像这样:

function getSupportedConfigItems()
    return {
        showWebMOnly = {
            type = 'boolean',
            description = '仅显示 WebM 视频',
            default = true
        }
    }
end

function setConfigItems(tbl)
    for key, value in pairs(tbl) do
        if key == 'showWebMOnly' then
            -- ...
        end
    end
end

这样,您的应用程序可以编写支持显示一些由您定义的众所周知的类型的首选项。应用程序将询问每个插件它可以支持哪些首选项,并显示这些选项。然后,它将告诉插件选择了哪些选项以及它们的值。

2011-06-06 03:18:16