Modul:IsIn: Unterschied zwischen den Versionen

erweitert
K (Test erweitert)
(erweitert)
Zeile 1: Zeile 1:
-- documentation
-- documentation
local isIn = {
local isInDoc = {
suite  = 'isIn',
suite  = 'IsIn',
serial = '2020-09-22',
serial = '2020-09-22',
-- item  = 12345678
item  = 99527605
}
}
local fs = require( 'Module:Failsafe' )
local fw = require( 'Module:FastWikidata' )
local wikidata = {
instanceOf = 'P31',
disambigId = 'Q4167410'
}
local isIn = {}
function isIn.isDisambig( frame )
local page, pageId
if type( frame ) == 'string' then
page = frame
else
page = frame.args.page or frame.args[ 1 ] or ''
end
page = mw.text.trim( page )
if page == '' then
return false
end
pageId = mw.wikibase.getEntityIdForTitle( page )
if not pageId then
return false
end
local values = fw.getValues( pageId, wikidata.instanceOf )
if values == '' then
return false
end
for i, v in ipairs( values ) do
if v.id == wikidata.disambigId then
return true
end
end
return false
end


function isIn.checkTarget( frame )
function isIn.checkTarget( frame )
Zeile 17: Zeile 54:
return 'emptyTarget'
return 'emptyTarget'
elseif targetPage == page.text then
elseif targetPage == page.text then
return 'wrongIsIn'
return 'isItself'
elseif args.enterTarget == args.page then
elseif args.enterTarget == args.page then
return 'enterTarget'
return 'enterTarget'
Zeile 26: Zeile 63:
end
end
targetPage = mw.title.new( targetPage )
targetPage = mw.title.new( targetPage )
if not targetPage or not targetPage.exists or targetPage.isRedirect then
if not targetPage then
-- disambiguation cannot be checked
return 'invalidTitle'
return 'wrongIsIn'
elseif not targetPage.exists then
return 'notExisting'
elseif targetPage.isRedirect then
return 'isRedirect'
elseif isIn.isDisambig( targetPage ) then
return 'isDisambig'
else
else
return args.page
return args.page
end
end
end
function isIn.addCategories( frame )
local args = frame:getParent().args
local cat, catSort
local i = -1
local result = ''
repeat
i = i + 2
cat = args[ i ] or ''
catSort = args[ i + 1 ] or ''
if cat ~= '' then
result = result .. '[[Category:' .. cat
.. ( catSort ~= '' and ( '|' .. catSort ) or '' )
.. ']]'
end
until i > 30 or cat == ''
return result
end
function isIn.addPageCategory( frame )
local page = mw.title.getCurrentTitle()
if page.nsText == '' then -- only main namespace
page = 'Category:' .. page.text
title = mw.title.new( page )
if title and title.exists then
return '[[' .. page.. '| ]]'
end
end
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
Anonymer Benutzer