Module:MapLink

 Documentation[voir] [modifier] [historique] [purger]

--[[ 	Source script:	https://it.wikivoyage.org/wiki/Modulo:MapLink 	Maintainer:		Andyrom75 ]] local WDI = require('Module:WikidataIB') local i18n = require( 'Module:MapLink/i18n' )  local function _isDefined(s) 	return s ~= '' and s end  local function _toNumber(s)     if type(s) == 'number' then return s end     if type(s) == 'string' then         local n = tonumber(s)         return n     end     return nil end  local function _getQid(qid, pid)     if not _isDefined(qid) then return nil end      local res = WDI._followQid{         qid   = qid,         props = pid,         all   = false -- ritorna solo il primo valore     }     -- Nota: Se non trova valori per 'props', restituisce il qid di input.     -- Trattiamo questo caso come "nessun valore" -> nil.     if res == qid then         return nil     end     return res end  local function _getCountryQid(listingQid)     -- 1) prova dal listing (se fornito)     local countryQid = listingQid and _getQid(listingQid, 'P17') or nil     if countryQid then         return countryQid     end      -- 2) fallback logico: QID della pagina corrente     local pageQid = mw.wikibase.getEntityIdForCurrentPage()     if pageQid then         countryQid = _getQid(pageQid, 'P17')     end     return countryQid end  local function _MapLink(frame) 	local args = frame.args 	local lat  = args and args.lat and _toNumber(args.lat)  -- se args.lat  == NA => lat  = nil 	local long = args and args.long and _toNumber(args.long) -- se args.long == NA => long = nil  	if _isDefined(lat) and _isDefined(long) then 		args.map = string.lower(args.map) 		local icon = i18n.icons[args.map] 		local link = i18n.links[args.map] 		local msg  = i18n.msg[args.map] 		local size  = i18n.sizes[args.map] 		if _isDefined(icon) and _isDefined(link) and _isDefined(msg) then 			local countryQid = _getCountryQid(args.wikidata) 			local blockedCountries = i18n.blockedCountries[args.map] or {} 			if countryQid and blockedCountries[countryQid] then 				return '' 			else 				return ' [[File:' .. icon .. '|' .. size .. '|class=listing-sister-' .. args.map .. '|link=' .. link .. lat .. ','.. long ..'|' .. msg .. ']]' 			end 		end 	end  	return '' end  local p = {}  function p.MapLinkTemplate(frame) 	return _MapLink(frame:getParent()) end  function p.MapLinkInvoke(frame) 	return _MapLink(frame) end  function p.MapLinkModule(frame) 	local Cframe = mw.getCurrentFrame() 	Cframe.args = frame.args 	return _MapLink(Cframe) end  return p