diff options
Diffstat (limited to 'plugins/data/init.lua')
-rw-r--r-- | plugins/data/init.lua | 126 |
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 |