From 0c0e38ca58d07ada747ee0171eb27d50cb9e2a56 Mon Sep 17 00:00:00 2001 From: cracyc Date: Sat, 21 Apr 2018 08:52:15 -0500 Subject: [PATCH] plugins/portname: sort the output file (nw) --- plugins/portname/init.lua | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/portname/init.lua b/plugins/portname/init.lua index 594878f77b0..b6403d2cbb4 100644 --- a/plugins/portname/init.lua +++ b/plugins/portname/init.lua @@ -72,15 +72,23 @@ function portname.startplugin() local ports = {} for pname, port in pairs(manager:machine():ioport().ports) do local labels = {} - ports[pname] = { labels = labels } + local sort = {} for fname, field in pairs(port.fields) do local mask = tostring(field.mask) if not labels[mask] then + sort[#sort + 1] = mask labels[mask] = { name = fname, player = field.player } setmetatable(labels[mask], { __tojson = function(v,s) + local label = { name = v.name, player = v.player } + setmetatable(label, { __jsonorder = { "player", "name" }}) return json.stringify({ name = v.name, player = v.player }) end }) end end + if #sort > 0 then + table.sort(sort, function(i, j) return tonumber(i) < tonumber(j) end) + setmetatable(labels, { __jsonorder = sort }) + ports[pname] = { labels = labels } + end end local function check_path(path) local attr = lfs.attributes(path) @@ -117,6 +125,7 @@ function portname.startplugin() if emu.softname() ~= "" then ctable.softname = emu.softname() end + setmetatable(ctable, { __jsonorder = { "romname", "softname", "ports" }}) file:write(json.stringify(ctable, { indent = true })) file:close() manager:machine():popmessage(string.format(_("Input port name file saved to %s"), ctrlrpath .. "/portname/" .. filename))