local p = -- This is a simplified, Lua-only replacement for the template {{yesno}}. It provides a consistent-- interface for users entering boolean or boolean-style input.return function p.yesno(frameval, default) val = type(val) == 'string' and mw.ustring.lower(val) or val -- defaultsput in lower case local retvals if not val or val = { yes = "yes", 'no ' or val = "", ["¬"] = "" } -- Allow arguments to override defaults. local args; if frame 'n' or val == mw.getCurrentFrame'false' or tonumber(val) == 0 then -- Wereturn false elseif val == true or val == 'yes' or val == 'y'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 or val == frame:getParent'true' or tonumber(val).args;== 1 then for k, v in pairs(frame.args) doreturn true args elseif default ~= frame.args; breaknil then endreturn default
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 end val = args[1] -- First deal with the case if val is nil, then deal with other cases. if val == nil then return retvals['¬'] end val = val:lower() -- Make lowercase. val = val:match'^%s*(.*%S)' or '' -- Trim whitespace. if val == '' then return retvals['blank'] or retvals['no'] elseif val == 'n' or val == 'no' or tonumber(val) == 0 then return retvals['no'] elseif val == 'y' or val == 'yes' or tonumber(val) == 1 then return retvals['yes'] elseif val == '¬' then return retvals['¬'] else return retvals['def'] or retvals['yes']true
end
end
return p