summaryrefslogtreecommitdiffstatshomepage
path: root/plugins/data/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/data/init.lua')
-rw-r--r--plugins/data/init.lua126
1 files changed, 68 insertions, 58 deletions
diff --git a/plugins/data/init.lua b/plugins/data/init.lua
index 4ef3675968f..0ce3dfa4631 100644
--- a/plugins/data/init.lua
+++ b/plugins/data/init.lua
@@ -4,17 +4,21 @@
-- heading if it supports the set otherwise nil and get which returns the data
-- the script should be named data_<name>.lua
-- this is set default on in the plugin.json
-local exports = {}
-exports.name = "data"
-exports.version = "0.0.1"
-exports.description = "Data plugin"
-exports.license = "The BSD 3-Clause License"
-exports.author = { name = "Carl" }
+local exports = {
+ name = 'data',
+ version = '0.0.2',
+ description = 'Data plugin',
+ license = 'BSD-3-Clause',
+ author = { name = 'Carl' } }
local data = exports
+local plugindir
+
+local reset_subscription
+
function data.set_folder(path)
- data.path = path
+ plugindir = path
end
function data.startplugin()
@@ -22,60 +26,66 @@ function data.startplugin()
local valid_lst = {}
local cur_set
local cur_list
- emu.register_start(function()
- data_scr = {}
- for file in lfs.dir(data.path) do
- local name = string.match(file, "^(data_.*).lua$")
- if name then
- local script = require("data/" .. name)
- if script then
- data_scr[#data_scr + 1] = script
+
+ reset_subscription = emu.add_machine_reset_notifier(
+ function ()
+ data_scr = {}
+ for file in lfs.dir(plugindir) do
+ local name = string.match(file, '^(data_.*).lua$')
+ if name then
+ local script = require('data/' .. name)
+ if script then
+ table.insert(data_scr, script)
+ end
+ end
end
- end
- end
- end)
- emu.register_callback(function(set)
- local ret = {}
- if set == "" then
- set = emu.romname()
- end
- if set == cur_set then
- return cur_list
- end
- cur_set = set
- if not set then
- return nil
- end
- valid_lst = {}
- for num, scr in ipairs(data_scr) do
- local setname, softname = set:match("^([^,]+),?(.*)$")
- if softname == "" then
- softname = nil
- end
- local name = scr.check(setname, softname)
- if name then
- ret[#ret + 1] = name
- valid_lst[#valid_lst + 1] = scr
- end
- end
- cur_list = ret
- return ret
- end, "data_list")
+ end)
- emu.register_callback(function(num)
- return valid_lst[num + 1].get()
- end, "data")
+ emu.register_callback(
+ function (set)
+ local ret = {}
+ if set == '' then
+ set = emu.romname()
+ end
+ if set == cur_set then
+ return cur_list
+ end
+ cur_set = set
+ if not set then
+ return nil
+ end
+ valid_lst = {}
+ for num, scr in ipairs(data_scr) do
+ local setname, softname = set:match('^([^,]+),?(.*)$')
+ if softname == '' then
+ softname = nil
+ end
+ local name = scr.check(setname, softname)
+ if name then
+ table.insert(ret, name)
+ table.insert(valid_lst, scr)
+ end
+ end
+ cur_list = ret
+ return ret
+ end,
+ 'data_list')
- emu.register_callback(function(num)
- local ver
- if valid_lst[num + 1].ver then
- ver = valid_lst[num + 1].ver()
- end
- if ver then
- return ver
- end
- return ""
- end, "data_version")
+ emu.register_callback(
+ function (num)
+ return valid_lst[num + 1].get()
+ end,
+ 'data')
+
+ emu.register_callback(
+ function (num)
+ local ver
+ if valid_lst[num + 1].ver then
+ ver = valid_lst[num + 1].ver()
+ end
+ return ver or ''
+ end,
+ 'data_version')
end
return exports