c - 我如何为我的 Lua 扩展做一个配置系统?

标签 c plugins lua

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

例如,我在文件夹中查找 .lua 文件。这些插件包含识别我的软件的功能,例如:

function GetName()
    return "Youtube Search"
end

它也有“ worker 功能”,例如:

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

这样,由于这个插件,我的软件现在可以在 youtube 上搜索。

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

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

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

最佳答案

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

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

关于c - 我如何为我的 Lua 扩展做一个配置系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6246688/

相关文章:

c - 在c中使用指针进行字符串操作

Grails jasper 参数

plugins - TeamCity 加载自定义插件,但没有证据表明插件代码运行

Lua 表和迭代

c# - 直接返回调用者的调用者并在下次调用时恢复状态

Lua 和 Torch 与 GPU 的问题

c - 使用 fork 和 dup 的简单 http 通用服务器

c - 使文字和线条出现在 GTK 窗口上...使用 XLIB 和 GDK

c - 找到平均值的更好算法

javascript - 使用快速表插件时,CKEditor 颜色按钮消失