Modul:IsIn: Unterschied zwischen den Versionen

K
21 Versionen von wikivoyage:Modul:IsIn importiert
KKeine Bearbeitungszusammenfassung
K (21 Versionen von wikivoyage:Modul:IsIn importiert)
 
(11 dazwischenliegende Versionen von einem anderen Benutzer 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
if not frame then
if not frame then
return false
return 'false'
end
if type( frame ) == 'table' and not frame.args then
return 'false'
end
end
local page, pageId
if type( frame ) == 'table' then
if type( frame ) == 'table' then
page = frame.args.page or frame.args[ 1 ] or ''
page = frame.args.page or frame.args[ 1 ] or ''
Zeile 28: Zeile 33:
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 65: 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 101: 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 107: 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