
![]() | 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-Eigenschaften:
|
Anwendung
Das Modul stellt gemeinsame Funktionen für die Module Mapframe, Mapshape und Mapshapes zur Verfügung. Modul:Mapshape utilities/i18n enthält Zeichenketten für die Internationalisierung.
Versionsbezeichnung auf Wikidata: 2023-05-03
Funktionen
function mu.isSet( param )
liefert true
, wenn die Zeichenkette param
einen nicht-leeren Wert enthält.
function mu.getParameter( arg, default )
liefert das Argument arg
, wenn es nicht leer ist, ansonsten den Wert default
.
function mu.getNumber( arg, default )
liefert den Zahlenwert für arg
, wenn es eine Zahl ist, ansonsten den Wert default
.
function mu.getSize( arg, default )
löscht ein möglicherweise vorhandenes endständiges „px“ und liefert dann den Zahlenwert für arg
, wenn es eine Zahl ist, ansonsten den Wert default
.
function mu.getFirstId( ids )
liefert die erste Wikidata-id aus einer kommaseparierten id-Liste.
function mu.getColor( id )
liefert einen Farbwert zur Wikidata-id, falls vorhanden, ansonsten eine leere Zeichenkette.
function mu.getImage( id )
liefert eine Abbildung zur Wikidata-id, falls vorhanden, ansonsten eine leere Zeichenkette.
function mu.getTitle( id )
liefert einen Titel zur Wikidata-id. Zuerst wird versucht, das Lemma eines möglicherweise vorhandenen Artikels auf dem lokalen Wiki zu bestimmen. Danach wird nach einem Label in der Sprache des Wikis oder in Englisch gesucht. Ansonsten wird der Name der aktuellen Unterseite bzw. Seite zurückgeliefert.
function mu.checkParams( frameArgs, list, moduleName, errorCateg )
überprüft die korrekte Schreibung von Parameternamen.
frameArgs
Tabelle mit Vorlagenparametern.list
Tabelle mit den erlaubten Parametern, z. B. Modul:Mapframe/Params. Eine leere Zeichenkette bedeutet Parametername wird beibehalten, eine nicht leere Zeichenkette definiert den zu verwendenden Parameternamen, eine Tabelle einen Satz möglicher Parameternamen.moduleName
Name des Moduls, in dem die die Funktion eingesetzt wird, ohneModul:
.errorCateg
Fehlerkategorie in der Form[[Kategorie:Name der Kategorie]]
.
function mu.getCategories( formatStr )
- Liefert eine Zeichenkette mit den Kategorie-Links aller verwendeten Wikidata-Eigenschaften zurück.
function mu.getMapshapes( wdId )
- Liefert eine Tabelle der Bestandteile eines Mapshapes-Satzes zurück.
wdId
ist die Wikidata-Id des Mapshapes-Satzes.
Benötigte weitere Module
Dieses Modul benötigt folgende weitere Module: Mapshape utilities/i18n • Wikidata utilities
Verwendung in anderen Modulen
Dieses Modul ist notwendig für die Ausführung folgender Module. Bei Anpassungen sollte die Funktionstüchtigkeit der folgenden Module geprüft werden. Benutze dazu auch diese Tracking-Kategorie um Fehler zu finden, die sich dann auf Artikel auswirken:
- Mapframe • Mapshape • Mapshapes
- Modul benötigt das Modul Mapshape utilities – Wartungskategorie, in der nochmals alle Module gelistet sind, die von diesem Modul abhängig sind.
- Die obige Dokumentation wurde aus der Seite Modul:Mapshape utilities/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
-- base functions for Mapshapes -- documentation local MapshapeUtilities = { suite = 'Mapshape utilities', serial = '2023-05-03', item = 65447201 } -- module import -- require( 'strict' ) local mg = mw.loadData( 'Module:Marker utilities/Groups' ) local mi = mw.loadData( 'Module:Mapshape utilities/i18n' ) local wu = require( 'Module:Wikidata utilities' ) -- module variable and administration local mu = { moduleInterface = MapshapeUtilities } -- helper functions function mu.isSet( param ) return param and param ~= ''; end function mu.getParameter( arg, default ) local r = arg or default if r == '' then r = default end return r end function mu.getNumber( arg, default ) return tonumber( arg or default ) or default end function mu.getSize( arg, default ) arg = arg:gsub( 'px$', '' ) return mu.getNumber( arg, default ) end function mu.getFirstId( ids ) if not mu.isSet( ids ) then return '' end local sep = ids:find( ',' ) if sep then return mw.text.trim( ids:sub( 1, sep - 1 ) ) end return ids end function mu.getColor( id ) local color, colorId if not mu.isSet( id ) then color = '' else -- getting P465: sRGB color hex triplet color = wu.getValue( id, 'P465' ) if color == '' then -- getting P462: color id colorId = wu.getId( id, 'P462' ) if colorId ~= '' then color = wu.getValue( colorId, 'P465' ) end end if color ~= '' then color = '#' .. color end end return color end function mu.getImage( id ) if not mu.isSet( id ) then return '' end return wu.getValue( id, 'P18' ) end function mu.getTitle( id ) if not mu.isSet( id ) then return nil end local label = mw.wikibase.getSitelink( id ) if label then return label end label = mw.wikibase.getLabel( id ) or mw.wikibase.getLabelByLang( id, 'en' ) if label then return label end return mw.title.getCurrentTitle().subpageText end -- checking and copying parameters function mu.checkParams( frameArgs, list, moduleName, errorCateg ) local complete = {} local args = {} local mismatch = {} moduleName = '<span class="error">' .. moduleName .. ': </span>' -- creating complete parameter list for check for key, value in pairs( list ) do if type( value ) == 'table' then for key2, value2 in ipairs( value ) do complete[ value2 ] = key end elseif value ~= '' then complete[ value ] = key else complete[ key ] = key end end local number, param for key, value in pairs( frameArgs ) do value = mw.text.trim( value ) if value == '' then value = nil end -- splitting numbered parameters param = key number = '' local count if not tonumber( key ) then number, count = mw.ustring.gsub( key, '^([%a%-]+)(%d+)$', '%2' ) if number == key then number = '' else param, count = mw.ustring.gsub( key, '^([%a%-]+)(%d+)$', '%1' ) end end -- complete[ param ] makes translation local key2 = complete[ param ] if not key2 and not tonumber( key ) then table.insert( mismatch, "''" .. key .. "''" ) else -- copying parameters to result array args if tonumber( key ) and not key2 then -- param can be a number, too args[ key ] = args[ key ] or value else args[ key2 .. number ] = args[ key2 .. number ] or value end end end for key, value in pairs( list ) do -- only for unnumbered parameters args[ key ] = args[ key ] or '' end local errorMsgs = '' if #mismatch == 1 then errorMsgs = mw.ustring.format( moduleName .. mi.unknownParam, mismatch[ 1 ] ) .. errorCateg elseif #mismatch > 1 then errorMsgs = mw.ustring.format( moduleName .. mi.unknownParams, table.concat( mismatch, ', ' ) ) .. errorCateg end return args, errorMsgs end function mu.getCategories( formatStr ) return wu.getCategories( formatStr ) end -- add Wikivoyage link if available function mu.addLink( title, id, entityId, wikiLang ) if mu.isSet( title ) and not title:find( '[[', 1, true ) and id ~= entityId then local link = mw.wikibase.getSitelink( id, wikiLang .. 'wikivoyage' ) if link then title = mw.ustring.format( '[[%s|%s]]', link, title ) end end return title end function mu.getMapshapes( wdId ) local values for i, property in ipairs( mi.mapshapesProps ) do values = wu.getValues( wdId, property, nil ) if #values > 0 then break end end return values end -- create a table of aliases for groups function mu.getAliases( tab, indx ) local result = {} if not tab then return result end local iItem for key, item in pairs( tab ) do iItem = item[ indx ] if iItem then if type( iItem ) == 'table' then for i, q in ipairs( iItem ) do result[ q ] = key end else result[ iItem ] = key end end end return result end -- check if group is allowed or return a default value function mu.checkGroup( group ) if mu.isSet( group ) then local aliases = mu.getAliases( mg.groups, 'alias' ) if aliases[ group ] then group = aliases[ group ] end return group else return mi.defaultGroup end end -- group translation for map legend into Wiki language function mu.translateGroup( group ) if not mu.isSet( group ) then group = mi.defaultGroup end local t = mg.groups[ group ] if t then t = t.map or t.label or t.alias or group if type( t ) == 'table' then t = t[ 1 ] end return t else return group end end return mu