Difference between revisions of "Module:Infobox road/map"

From blackwiki
Jump to navigation Jump to search
test>Hoo man
(Fix, per https://lists.wikimedia.org/pipermail/wikidata-l/2015-February/005450.html)
test>Andy M. Wang
(porting changes from sandbox to live (per edit request at Template talk:Infobox road))
Line 1: Line 1:
 
local p = {}
 
local p = {}
  
local mapsizes = {["DEU"] = "200", ["USA"] = "290x172"}
+
local format = mw.ustring.format
 +
 
 +
local mapsizes = {
 +
DEU = "200",
 +
USA = "290x172"
 +
}
 +
 
 +
function p._map(args)
 +
local map = args.map or ''
 +
if args.map_custom == "yes" then
 +
return format('<span style="white-space:nowrap;">%s</span>', map)
 +
end
 +
if map == '' then
 +
local entity = mw.wikibase.getEntityObject() or {}
 +
local claims = entity.claims or {}
 +
local mapProp = claims.P15
 +
if not mapProp or mapProp[1].mainsnak.snaktype ~= 'value' then
 +
return ""
 +
end
 +
map = mapProp[1].mainsnak.datavalue.value
 +
end
 +
 
 +
local mapsize = mapsizes[args.country] or '290'
 +
local alt = args.map_alt or ''
 +
return format("[[File:%s|%spx|alt=%s]]", map, mapsize, alt)
 +
end
  
 
function p.map(frame)
 
function p.map(frame)
    local pframe = frame:getParent()
+
local argsModule = require("Module:Arguments")
    local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
+
local args = argsModule.getArgs(frame)
    local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
+
local state = args.state or args.province
   
+
if not args.country then
    local map_custom = args.map_custom or ''
+
local countryMask = mw.loadData("Module:Road data/countrymask")
    local map = args.map or ''
+
args.country = countryMask[state]
    if map_custom == "yes" then
+
end
        return '<span style="white-space:nowrap;">' .. map .. '</span>'
+
return p._map(args)
    end
 
    if map == '' then
 
        local entity = mw.wikibase.getEntity() or {}
 
        local claims = entity.claims or {}
 
        local mapProp = claims.P15
 
        if not mapProp or mapProp[1].mainsnak.snaktype ~= 'value' then
 
            return ""
 
        end
 
        map = mapProp[1].mainsnak.datavalue.value
 
    end
 
    local filecode = "[[File:" .. map .. "|"
 
   
 
    local countrymod = require"Module:Infobox road/meta/mask/country"
 
    local countryarg = args.country
 
    local state = args.state or args.province
 
    local country = ''
 
    if countryarg and state then
 
        country = countrymod._country(state, countryarg)
 
    end
 
   
 
    local mapsize = mapsizes[country] or '290'
 
    local alt = args.map_alt or ''
 
    filecode = filecode .. mapsize .. 'px|alt=' .. alt .. ']]'
 
    return filecode
 
 
end
 
end
  
 
return p
 
return p

Revision as of 15:44, 2 May 2016

{{Module rating }}

Usage

{{#invoke:Infobox road|function_name}}



local p = {}

local format = mw.ustring.format

local mapsizes = {
	DEU = "200",
	USA = "290x172"
}

function p._map(args)
	local map = args.map or ''
	if args.map_custom == "yes" then
		return format('<span style="white-space:nowrap;">%s</span>', map)
	end
	if map == '' then
		local entity = mw.wikibase.getEntityObject() or {}
		local claims = entity.claims or {}
		local mapProp = claims.P15
		if not mapProp or mapProp[1].mainsnak.snaktype ~= 'value' then
			return ""
		end
		map = mapProp[1].mainsnak.datavalue.value
	end

	local mapsize = mapsizes[args.country] or '290'
	local alt = args.map_alt or ''
	return format("[[File:%s|%spx|alt=%s]]", map, mapsize, alt)
end

function p.map(frame)
	local argsModule = require("Module:Arguments")
	local args = argsModule.getArgs(frame)
	local state = args.state or args.province
	if not args.country then
		local countryMask = mw.loadData("Module:Road data/countrymask")
		args.country = countryMask[state]
	end
	return p._map(args)
end

return p