erweitert
K 22 Versionen von skanwiki:Modul:IsIn importiert
 
(14 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
local isInDoc = {
local isInDoc = {
suite  = 'IsIn',
suite  = 'IsIn',
serial = '2020-09-22',
serial = '2022-10-22',
item  = 99527605
item  = 99527605
}
}


local fs = require( 'Module:Failsafe' )
-- require( 'strict' )
local fw = require( 'Module:FastWikidata' )
local wu = require( 'Module:Wikidata utilities' )


local wikidata = {
local wikidata = {
Zeile 14: Zeile 14:
}
}


local isIn = {}
local isIn = {
moduleInterface = isInDoc
}


function isIn.isDisambig( frame )
function isIn.isDisambig( frame )
local page, pageId
local page, pageId
if type( frame ) == 'string' then
if not frame then
return 'false'
end
if type( frame ) == 'table' and not frame.args then
return 'false'
end
if type( frame ) == 'table' then
page = frame.args.page or frame.args[ 1 ] or ''
else
page = frame
page = frame
else
page = frame.args.page or frame.args[ 1 ] or ''
end
end
page = mw.text.trim( page )
page = mw.text.trim( page )
if page == '' then
if page == '' then
return false
return 'false'
end
end
pageId = mw.wikibase.getEntityIdForTitle( page )
pageId = mw.wikibase.getEntityIdForTitle( page )
if not pageId then
if not pageId then
return false
return 'false'
end
end
local values = fw.getValues( pageId, wikidata.instanceOf )
local values = wu.getValues( pageId, wikidata.instanceOf )
if values == '' then
if values == '' then
return false
return 'false'
end
end
for i, v in ipairs( values ) do
for i, v in ipairs( values ) do
if v.id == wikidata.disambigId then
if v.id == wikidata.disambigId then
return true
return 'true'
end
end
end
end
return false
return 'false'
end
end


Zeile 62: Zeile 70:
targetPage = page.nsText .. ':' .. targetPage
targetPage = page.nsText .. ':' .. targetPage
end
end
targetPage = mw.title.new( targetPage )
local targetObj = mw.title.new( targetPage )
if not targetPage then
if not targetObj then
return 'invalidTitle'
return 'invalidTitle'
elseif not targetPage.exists then
elseif not targetObj.exists then
return 'notExisting'
return 'notExisting'
elseif targetPage.isRedirect then
elseif targetObj.isRedirect then
return 'isRedirect'
return 'isRedirect'
elseif isIn.isDisambig( targetPage ) then
elseif isIn.isDisambig( targetPage ) == 'true' then
return 'isDisambig'
return 'isDisambig'
else
else
Zeile 98: Zeile 106:
if page.nsText == '' then -- only main namespace
if page.nsText == '' then -- only main namespace
page = 'Category:' .. page.text
page = 'Category:' .. page.text
title = mw.title.new( page )
local title = mw.title.new( page )
if title and title.exists then
if title and title.exists then
return '[[' .. page.. '| ]]'
return '[[' .. page.. '| ]]'
Zeile 104: Zeile 112:
end
end
return ''
return ''
end
-- module administration
function isIn.IsIn()
return isInDoc
end
function isIn.failsafe( version )
return fs._failsafe( version, isInDoc ) or ''
end
end


return isIn
return isIn