Dokumentation für das Modul IsIn[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Verwendung

Dieses Modul enthält Funktionen zur Unterstützung der Vorlagen {{IstIn}} und {{IstInKat}}. Die Funktionen des Moduls werden nicht direkt aufgerufen, sondern über die genannten Vorlagen.

Versionsbezeichnung auf Wikidata: 2022-10-22 Ok!

Funktionen

function isIn.isDisambig( frame ) 

Die Funktion bestimmt, ob es sich bei der angegebenen Seite um eine Begriffsklärungsseite (Wegweiser) handelt oder nicht. Es gibt zwar das Schlüsselwort __DISAMBIG__, das aber von Vorlagen und Lua-Modulen nicht ausgewertet werden kann. Deshalb wird der Status aus Wikidata bezogen.

Es gibt zwei Parameterformen:

  • frame: string. Die zu testende Seite wird direkt als Zeichenkette übergeben.
  • frame: table. Der Aufruf erfolgt über invoke in der Form: {{#invoke: IsIn | isDisambig | page = <Titel> }}. Der Artikelname wird über die Parameter page oder 1 übergeben.

Das Ergebnis wird als eine Zeichenkette übergeben. Einzige Werte sind true (ist eine Begriffsklärungsseite) oder false (ist keine Begriffsklärungsseite).

function isIn.checkTarget( frame ) 

Die Funktion liefert den Typ der zu testenden Seite als Zeichenkette zurück. Der Aufruf erfolgt über invoke in der Form: {{#invoke: IsIn | checkTarget | page = {{{1}}} | enterTarget = Ist-In eintragen }}.

Vorgabeparameter:

  • |page= Name der zu testenden Seite.
  • |enterTarget= Dummy-Seitenname, der auf einen fehlenden Eintrag hinweist.

Mögliche Rückgabewerte:

  • emptyTarget: Es wurde eine leere Zeichenkette übergeben.
  • enterTarget: Die übergebene Zeichenkette ist identisch zu enterTarget.
  • invalidTitle: Die Zeichenkette enthält unerlaubte Zeichen.
  • isDisambig: Bei der zu testenden Seite handelt es sich um eine Begriffsklärungsseite.
  • isItself: Die zu testende Seite ist identisch zur aufrufenden Artikelseite.
  • isRedirect: Bei der zu testenden Seite handelt es sich um eine Weiterleitungsseite.
  • notExisting: Die angegebene Seite existiert nicht.

In allen anderen Fällen wird der Seitenname mit dem Namensraum zurückgegeben.

function isIn.addCategories( frame ) 

Die Funktion liefert einen Satz von Kategorieaufrufen als Zeichenkette zurück, die der Elternvorlage als nummerierte Parameter übergeben wurden. Ungerade Parameter bezeichnen den Kategoriennamen (ohne Kategorie), gerade das Sortierkriterium.

function isIn.addPageCategory( frame ) 

Die Funktion liefert einen Kategorieaufruf als Zeichenkette zur aufrufenden Seite zurück, wenn die Kategorie existiert.

Benötigte weitere Module

Dieses Modul benötigt folgende weitere Module: Wikidata utilities
Hinweise
-- documentation local isInDoc = { 	suite  = 'IsIn', 	serial = '2022-10-22', 	item   = 99527605 }  -- require( 'strict' ) local wu = require( 'Module:Wikidata utilities' )  local wikidata = { 	instanceOf = 'P31', 	disambigId = 'Q4167410' }  local isIn = { 	moduleInterface = isInDoc }  function isIn.isDisambig( frame ) 	local page, pageId 	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 	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 = wu.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 ) 	local page = mw.title.getCurrentTitle()  	local args = frame.args 	args.page = args.page or args[ 1 ] or '' 	args.page = mw.text.trim( args.page ) 	args.enterTarget = args.enterTarget or '' 	local targetPage = mw.ustring.gsub( args.page, '^' .. page.nsText .. ':', '' ) 	if targetPage == '' then 		return 'emptyTarget' 	elseif targetPage == page.text then 		return 'isItself' 	elseif args.enterTarget == args.page then 		return 'enterTarget' 	end  	if page.nsText ~= '' then 		targetPage = page.nsText .. ':' .. targetPage 	end 	local targetObj = mw.title.new( targetPage ) 	if not targetObj then 		return 'invalidTitle' 	elseif not targetObj.exists then 		return 'notExisting' 	elseif targetObj.isRedirect then 		return 'isRedirect' 	elseif isIn.isDisambig( targetPage ) == 'true' then 		return 'isDisambig' 	else 		return args.page 	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 		local title = mw.title.new( page ) 		if title and title.exists then 			return '[[' .. page.. '| ]]' 		end 	end 	return '' end  return isIn