Changeset

9656:3da6cc927ee6

util.format: Tweak how nil values are handled Because [<nil>] seems exsessive
author Kim Alvefur <zash@zash.se>
date Wed, 28 Nov 2018 20:36:53 +0100
parents 9654:ede4e15a0fed
children 9657:bd75edf0e0e2
files spec/util_format_spec.lua util/format.lua
diffstat 2 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/spec/util_format_spec.lua	Tue Nov 27 21:23:31 2018 +0100
+++ b/spec/util_format_spec.lua	Wed Nov 28 20:36:53 2018 +0100
@@ -5,6 +5,8 @@
 		it("should work", function()
 			assert.equal("hello", format("%s", "hello"));
 			assert.equal("<nil>", format("%s"));
+			assert.equal("<nil>", format("%d"));
+			assert.equal("<nil>", format("%q"));
 			assert.equal(" [<nil>]", format("", nil));
 			assert.equal("true", format("%s", true));
 			assert.equal("[true]", format("%d", true));
--- a/util/format.lua	Tue Nov 27 21:23:31 2018 +0100
+++ b/util/format.lua	Wed Nov 28 20:36:53 2018 +0100
@@ -28,13 +28,12 @@
 		if spec ~= "%%" then
 			i = i + 1;
 			local arg = args[i];
-			if arg == nil then -- special handling for nil
-				arg = "<nil>"
-				args[i] = "<nil>";
-			end
 
 			local option = spec:sub(-1);
-			if option == "q" or option == "s" then -- arg should be string
+			if arg == nil then
+				args[i] = "nil";
+				spec = "<%s>";
+			elseif option == "q" or option == "s" then -- arg should be string
 				args[i] = tostring(arg);
 			elseif type(arg) ~= "number" then -- arg isn't number as expected?
 				args[i] = tostring(arg);