Module:Arguments: Difference between revisions
Jump to navigation
Jump to search
m 1 revision from w:en:Module:Arguments: attempt import of uptodate version |
m>Mr. Stradivarius 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 | ||
metaArgs[key] = argTableVal | metaArgs[key] = argTableVal | ||
return argTableVal | return argTableVal | ||
end | end | ||
end | end | ||
nilArgs[key] = 'h' | |||
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 |