mod_admin_shell: Respect metatables in output serialization
authorKim Alvefur <zash@zash.se>
Fri, 12 Nov 2021 11:33:09 +0100
changeset 11895 6a241e66eec5
parent 11894 b9aab1962a2b
child 11896 e712133b4de1
mod_admin_shell: Respect metatables in output serialization Makes it so that returning e.g. util.cache :table() produces useful output, which otherwise would look like empty tables.
plugins/mod_admin_shell.lua
--- a/plugins/mod_admin_shell.lua	Thu Nov 11 13:27:28 2021 +0000
+++ b/plugins/mod_admin_shell.lua	Fri Nov 12 11:33:09 2021 +0100
@@ -286,7 +286,8 @@
 -- Anything in def_env will be accessible within the session as a global variable
 
 --luacheck: ignore 212/self
-local serialize_defaults = module:get_option("console_prettyprint_settings", { fatal = false, unquoted = true, maxdepth = 2})
+local serialize_defaults = module:get_option("console_prettyprint_settings",
+	{ fatal = false; unquoted = true; maxdepth = 2; table_iterator = "pairs" })
 
 def_env.output = {};
 function def_env.output:configure(opts)
@@ -302,6 +303,11 @@
 			opts[k] = v;
 		end
 	end
+	if opts.table_iterator == "pairs" then
+		opts.table_iterator = pairs;
+	elseif type(opts.table_iterator) ~= "function" then
+		opts.table_iterator = nil; -- rawpairs is the default
+	end
 	self.session.serialize = serialization.new(opts);
 end