我怎么能为我的Lua扩展做配置系统?

时间:2011-06-05 23:44:33

标签: c plugins 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个字符串),然后将其显示在列表中。

我怎样才能优雅地实施解决这些问题的解决方案?

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

通过这种方式,您的应用程序可以编写为支持显示一些众所周知类型的首选项(由您定义,示例为布尔值)。应用程序会询问每个插件它可以支持哪些首选项,并显示这些选项。然后它会告诉插件选择了哪些选项,以及它们的值是什么。