[editar] [purgar]

Documentación del módulo

Version check

Designación de la versión en Wikidata: 2023-05-03 Ok!

Uso

Common functions for the modules Mapframe, Mapshape und Mapshapes.
Esta documentación es transcluida desde Módulo:Mapshape utilities/doc.
Los editores pueden experimentar en la zona de pruebas de la plantilla.
Por favor, añade las categorías a la subpágina de documentación. Subpáginas de esta plantilla.

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