Modul:Failsafe: Unterschied zwischen den Versionen

K
15 Versionen von wikivoyage:Modul:Failsafe importiert
KKeine Bearbeitungszusammenfassung
K (15 Versionen von wikivoyage:Modul:Failsafe importiert)
 
(13 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
local Failsafe = {
local Failsafe = {
suite  = 'Failsafe',
suite  = 'Failsafe',
serial = '2019-07-09',
serial = '2022-04-25',
item  = 65306115
item  = 65306115
}
}


-- modul variable
local strings = {
local fs = {}
docPage          = 'Doku',
ok                = '[[File:Artículo bueno.svg|16px|text-bottom|Ok!]]',
notOk            = '[[File:Symbol oppose vote.svg|15px|text-bottom|Contra]][[Category:Andere Modulversion in Wikidata]]',
versionText      = 'Versionsbezeichnung auf Wikidata:',
noVersion        = 'keine Version verfügbar'
}
 
-- modul variable and administration
local fs = {
moduleInterface = Failsafe
}


-- possible vaules of version
-- possible vaules of version
Zeile 13: Zeile 23:
--  string:    string of version required
--  string:    string of version required
--  table:      frame table (template, #invoke)
--  table:      frame table (template, #invoke)
-- moduleInterface
-- aModuleInterface
--  table
--  table


function fs._failsafe( version, moduleInterface )
function fs._failsafe( version, aModuleInterface )
if type( moduleInterface ) ~= 'table' then
if type( aModuleInterface ) ~= 'table' then
return false
return false
end
end
Zeile 48: Zeile 58:
if version == 'wikidata' then
if version == 'wikidata' then
version = nil
version = nil
i = moduleInterface.item
i = aModuleInterface.item
if type( i ) == 'number' and i > 0 then
if type( i ) == 'number' and i > 0 then
s = mw.wikibase.getBestStatements( 'Q' .. i, 'P348' )
s = mw.wikibase.getBestStatements( 'Q' .. i, 'P348' )
if #s > 0 then
for i = 1, #s, 1 do
for i = 1, #s, 1 do
if s[ i ].mainsnak.snaktype == 'value' then
if s[ i ].mainsnak.snaktype == 'value' then
v = s[ i ].mainsnak.datavalue.value
v = s[ i ].mainsnak.datavalue.value
if v ~= '' then
if v ~= '' then
return v:gsub( '%.', '-' )
return v
end
end
end
end
end
Zeile 64: Zeile 72:
end
end


if not moduleInterface.serial then
if not aModuleInterface.serial then
return false
return false
elseif not version or version <= moduleInterface.serial then
elseif not version or version <= aModuleInterface.serial then
return moduleInterface.serial
return aModuleInterface.serial
else
else
return false
return false
Zeile 73: Zeile 81:
end
end


-- not possible for Failsafe itself
local function getModule( title )
-- function fs.Failsafe()
return require( 'Module:' .. title )
-- return Failsafe
end
-- end
 
function fs.getModuleVersion( frame )
local result = strings.versionText .. ' ' .. strings.noVersion
local fromModule, fromWikidata, m, success
 
local title = mw.ustring.gsub( mw.title.getCurrentTitle().text, '/' .. strings.docPage, '' )
if title == 'Failsafe' then -- the module itself
success = true
m = fs
else
success, m = pcall( getModule, title )
end
if success then
if m.moduleInterface then
fromModule = m.moduleInterface.serial
fromWikidata = fs._failsafe( 'wikidata', m.moduleInterface )
end
if fromWikidata or fromModule then
result = strings.versionText .. ' <code>'
.. ( fromWikidata or fromModule ) .. '</code>'
if fromWikidata and fromModule then
result = result .. ' ' ..
( fromWikidata == fromModule and strings.ok or strings.notOk )
end
end
end


function fs.failsafe( version )
return result
return fs._failsafe( version, Failsafe ) or ''
end
end


return fs
return fs