Ошибка Lua на строке 1: variable 'mwLogFuncChanged' is not declared.
Module:Yesno provides a consistent interface for processing boolean or boolean-style string input. While Lua allows the true
and false
boolean values, wikicode templates can only express boolean values through strings such as "yes", "no", etc. This module processes these kinds of strings and turns them into boolean input for Lua to process. It also returns nil
values as nil
, to allow for distinctions between nil
and false
. The module also accepts other Lua structures as input, i.e. booleans, numbers, tables, and functions. If it is passed input that it does not recognise as boolean or nil
, it is possible to specify a default value to return.
if not _G.mwLogFuncChanged then
local oldLog = mw.log
mw.oldLog = oldLog
local function allToString(...)
local t = { ... }
for i = 1, select('#', ...) do
t[i] = tostring(t[i])
end
return table.concat(t, ' ')
end
function mw.log(...)
return oldLog(getCodeLocation(), allToString(...))
end
function mw.logObject(...)
return oldLog(getCodeLocation(), mw.dumpObject(...))
end
_G.mwLogFuncChanged = true
end
local list_t = {
true, 'true', 't', 'tru',
'yes', 'y',
'on',
'valid',
'1', 1
}
local list_f = {
false, 'false', 'f',
'no', 'n',
'not',
'off',
'0', 0
}
return function (val, default, nil_default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
if not nil_default and default then nil_default = default end
val = type(val) == 'string' and val:lower() or val
local function contains(array, value)
for i=1,#array do
if array[i] == value then return true end
end
return false
end
if val == nil then
if nil_default then return nil_default else return nil end
elseif contains(list_t, val) then return true
elseif contains(list_f, val) then return false
else return default
end
end