--- 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);