Module:Arguments: Difference between revisions
From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Content deleted Content added
m 1 revision from w:en:Module:Arguments: attempt import of uptodate version |
fix bug where explicitly deleted args were still appearing when iterated over with pairs or ipairs - code courtesy of User:Jackmcbarn |
||
Line 170: | Line 170: | ||
-- into one table using the specified iterator. If a value is already |
-- into one table using the specified iterator. If a value is already |
||
-- present it is not overwritten; tables listed earlier have precedence. |
-- present it is not overwritten; tables listed earlier have precedence. |
||
-- We are also memoizing nil values, |
-- We are also memoizing nil values, which can be overwritten if they |
||
-- |
-- are 's' (soft). |
||
--]] |
--]] |
||
for _, t in ipairs(tables) do |
for _, t in ipairs(tables) do |
||
for key, val in iterator(t) do |
for key, val in iterator(t) do |
||
if metaArgs[key] == nil then |
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then |
||
local tidiedVal = tidyVal(key, val) |
local tidiedVal = tidyVal(key, val) |
||
if tidiedVal == nil then |
if tidiedVal == nil then |
||
nilArgs[key] = |
nilArgs[key] = 's' |
||
else |
else |
||
metaArgs[key] = tidiedVal |
metaArgs[key] = tidiedVal |
||
Line 219: | Line 219: | ||
for _, argTable in ipairs(argTables) do |
for _, argTable in ipairs(argTables) do |
||
local argTableVal = tidyVal(key, argTable[key]) |
local argTableVal = tidyVal(key, argTable[key]) |
||
if argTableVal |
if argTableVal ~= nil then |
||
⚫ | |||
else |
|||
metaArgs[key] = argTableVal |
metaArgs[key] = argTableVal |
||
return argTableVal |
return argTableVal |
||
end |
end |
||
end |
end |
||
⚫ | |||
return nil |
return nil |
||
end |
end |
||
Line 255: | Line 254: | ||
--]] |
--]] |
||
metaArgs[key] = nil |
metaArgs[key] = nil |
||
nilArgs[key] = |
nilArgs[key] = 'h' |
||
else |
else |
||
metaArgs[key] = val |
metaArgs[key] = val |