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

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 Ok!

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, ohne Modul:.
  • 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:

Hinweise
-- 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