Software /
code /
prosody
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);