Modul:Failsafe: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 73: | Zeile 73: | ||
end | end | ||
-- | -- returns module interface | ||
-- function fs.Failsafe() | -- function name is identical to the module name | ||
function fs.Failsafe() | |||
return Failsafe | |||
end | |||
-- returns failsafe function for this module | |||
-- identical name "failsafe" for all modules, therefore it could be used as | |||
-- example code | |||
function fs.failsafe( version ) | function fs.failsafe( version ) | ||
return fs._failsafe( version, Failsafe ) or '' | return fs._failsafe( version, Failsafe ) or '' | ||
Version vom 9. Juli 2019, 16:14 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Failsafe/doc erstellt werden
-- module interface
local Failsafe = {
suite = 'Failsafe',
serial = '2019-07-09',
item = 65306115
}
-- modul variable
local fs = {}
-- possible vaules of version
-- nil, false: no version required
-- string: string of version required
-- table: frame table (template, #invoke)
-- moduleInterface
-- table
function fs._failsafe( version, moduleInterface )
if type( moduleInterface ) ~= 'table' then
return false
end
local i, s, v
-- check if version is a frame table
if type( version ) == 'table' and type( version.args ) == 'table' then
s = version.args[ 1 ]
if not s and type( version.getParent ) == 'function' then
i = version:getParent()
if i then
s = i.args[ 1 ]
end
end
version = s
end
-- version should be a string
if type( version ) == 'string' then
-- check if empty string
version = mw.text.trim( version )
if version == '' then
version = nil
end
else
version = nil
end
-- getting version from Wikidata
if version == 'wikidata' then
version = nil
i = moduleInterface.item
if type( i ) == 'number' and i > 0 then
s = mw.wikibase.getBestStatements( 'Q' .. i, 'P348' )
if #s > 0 then
for i = 1, #s, 1 do
if s[ i ].mainsnak.snaktype == 'value' then
v = s[ i ].mainsnak.datavalue.value
if v ~= '' then
return v
end
end
end
end
end
end
if not moduleInterface.serial then
return false
elseif not version or version <= moduleInterface.serial then
return moduleInterface.serial
else
return false
end
end
-- returns module interface
-- function name is identical to the module name
function fs.Failsafe()
return Failsafe
end
-- returns failsafe function for this module
-- identical name "failsafe" for all modules, therefore it could be used as
-- example code
function fs.failsafe( version )
return fs._failsafe( version, Failsafe ) or ''
end
return fs