
![]() | Dieses Modul wird auf vielen Seiten benutzt, und Änderungen werden projektweit sofort wahrgenommen. Bitte teste Änderungen vorher im /Sandkasten oder in deinem Benutzernamensraum. Die getestete Änderung sollte dann in einem einzigen Edit auf dieser Seite eingefügt werden. Bitte diskutiere Änderungen zuerst auf der Diskussionsseite bevor du sie implementierst. |
![]() | Dieses Modul ist geschützt. Es wird sehr häufig verwendet oder substituiert. Änderungen können zu einer großen Serverlast führen, und Vandalismus kann sich auf eine Vielzahl von Artikel auswirken. |
![]() | Dieses Modul benutzt die Wikidata-Eigenschaft:
|
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
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 überinvoke
in der Form:{{#invoke: IsIn | isDisambig | page = <Titel> }}
. Der Artikelname wird über die Parameterpage
oder1
ü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 zuenterTarget
.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
- Die obige Dokumentation wurde aus der Seite Modul:IsIn/Doku eingefügt. (bearbeiten | Versionsgeschichte) Die Kategorien für dieses Modul sollten in der Dokumentation eingetragen werden. Die Interwiki-Links sollten auf Wikidata eingepflegt werden.
- Liste der Unterseiten
-- 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