Comparison

util/format.lua @ 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
parent 8417:e88db5668cfb
child 9687:8c92ef4270c9
comparison
equal deleted inserted replaced
9654:ede4e15a0fed 9656:3da6cc927ee6
26 local i = 0; 26 local i = 0;
27 formatstring = formatstring:gsub("%%[^cdiouxXaAeEfgGqs%%]*[cdiouxXaAeEfgGqs%%]", function(spec) 27 formatstring = formatstring:gsub("%%[^cdiouxXaAeEfgGqs%%]*[cdiouxXaAeEfgGqs%%]", function(spec)
28 if spec ~= "%%" then 28 if spec ~= "%%" then
29 i = i + 1; 29 i = i + 1;
30 local arg = args[i]; 30 local arg = args[i];
31 if arg == nil then -- special handling for nil
32 arg = "<nil>"
33 args[i] = "<nil>";
34 end
35 31
36 local option = spec:sub(-1); 32 local option = spec:sub(-1);
37 if option == "q" or option == "s" then -- arg should be string 33 if arg == nil then
34 args[i] = "nil";
35 spec = "<%s>";
36 elseif option == "q" or option == "s" then -- arg should be string
38 args[i] = tostring(arg); 37 args[i] = tostring(arg);
39 elseif type(arg) ~= "number" then -- arg isn't number as expected? 38 elseif type(arg) ~= "number" then -- arg isn't number as expected?
40 args[i] = tostring(arg); 39 args[i] = tostring(arg);
41 spec = "[%s]"; 40 spec = "[%s]";
42 end 41 end