Difference between revisions of "Module:Yesno"
better code for getting args
>Mr. Stradivarius (use parent args again) |
>Mr. Stradivarius (better code for getting args) |
||
Line 12: | Line 12: | ||
-- Allow arguments to override defaults. Arguments are taken from | -- Allow arguments to override defaults. Arguments are taken from | ||
-- the parent frame; other arguments are ignored. | -- the parent frame; other arguments are ignored. | ||
for k,v in pairs(frame | local args; | ||
if frame == mw.getCurrentFrame() then | |||
-- We're being called via #invoke. If the invoking template passed any args, use | |||
-- them. Otherwise, use the args that were passed into the template. | |||
args = frame:getParent().args; | |||
for k, v in pairs(frame.args) do | |||
args = frame.args; | |||
break | |||
end | |||
else | |||
-- We're being called from another module or from the debug console, so assume | |||
-- the args are passed in directly. | |||
args = frame; | |||
end | |||
for k,v in pairs(args) do | |||
retvals[k] = v | retvals[k] = v | ||
end | end | ||
val = | val = args[1] | ||
-- First deal with the case if val is nil, then deal with other cases. | -- First deal with the case if val is nil, then deal with other cases. | ||
Line 26: | Line 41: | ||
val = val:match'^%s*(.*%S)' or '' -- Trim whitespace. | val = val:match'^%s*(.*%S)' or '' -- Trim whitespace. | ||
if val == '' then | if val == '' then | ||
return retvals['blank'] or retvals['no'] | return retvals['blank'] or retvals['no'] | ||
elseif val == ' | elseif val == 'n' or val == 'no' or tonumber(val) == 0 then | ||
return retvals['no'] | return retvals['no'] | ||
elseif val == 'y' then | elseif val == 'y' or val == 'yes' or tonumber(val) == 1 then | ||
return retvals['yes'] | return retvals['yes'] | ||
elseif val == '¬' then | elseif val == '¬' then | ||
return retvals['¬'] | return retvals['¬'] | ||
else | else | ||
return retvals['def'] or retvals['yes'] | return retvals['def'] or retvals['yes'] |