diff options
| author | 2016-09-07 14:27:35 +0200 | |
|---|---|---|
| committer | 2016-09-07 14:27:35 +0200 | |
| commit | fa4b5bdee60e7aa95b435f0a1198a314de815fb1 (patch) | |
| tree | 2ee3ba6bfc502db21c8454eb4648fc0219419568 /plugins/data/init.lua | |
| parent | 42ab14dc64fec61d27cd9c6da7d8e7bb8e5f24f1 (diff) | |
| parent | 9d101cad6a9834c5645f20c152466267ab13845f (diff) | |
Merge pull request #1368 from cracyc/lua_dats
Move UI dats to lua plugin
Diffstat (limited to 'plugins/data/init.lua')
| -rw-r--r-- | plugins/data/init.lua | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/plugins/data/init.lua b/plugins/data/init.lua new file mode 100644 index 00000000000..83cf194af11 --- /dev/null +++ b/plugins/data/init.lua @@ -0,0 +1,85 @@ +-- license:BSD-3-Clause +-- copyright-holders:Carl +-- A data script should contain two functions check which takes a set name and returns the data +-- 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 data = exports + +function data.set_folder(path) + data.path = path +end + +function data.startplugin() + local data_scr = {} + 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 + end + end + end + end) + emu.register_callback(function(set) + local ret + if set == cur_set then + return cur_list + elseif set == "" then + set = cur_set + else + cur_set = set + end + 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 + if not ret then + ret = name + else + ret = ret .. "," .. name + end + valid_lst[#valid_lst + 1] = scr + end + end + cur_list = ret + return ret + end, "data_list") + + 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 + if ver then + return ver + end + return "" + end, "data_version") +end + +return exports |
