Module:Australian place map

-- This module implements the selection of the location map -- in Template:Infobox Australian place and Template:Infobox Australian road require('strict') local p = {}

local function isnotblank( s ) return s and s ~= '' end

local statenames = { sa = 'South Australia', vic = 'Victoria', nsw = 'New South Wales', qld = 'Queensland', nt = 'Northern Territory', wa = 'Western Australia', tas = 'Tasmania', act = 'Australian Capital Territory', jbt = 'Jervis Bay Territory', ni = 'Norfolk Island' } local mapwidths = { sa = 230, qld = 190, nt = 190, wa = 180, tas = 210, act = 180 }

function p.main(frame) local largs = frame:getParent.args local place_type = (largs.type or ''):lower local map_name = largs.map_type or '' local map_type = (largs.map_type or 'auto'):lower local state_abbr = (largs.state or ''):lower local map_width = 270 local coords = largs.coordinates or '' local coordsa = largs.coordinates_a or '' local coordsb = largs.coordinates_b or '' -- Default for LGAs is nomap -- Default for everywhere else is auto if map_type == '' or map_type == 'auto' then if place_type == 'lga' then map_type = 'nomap' else map_type = 'auto' end end -- Apply legacy parameters if isnotblank( largs.alternative_location_map ) then map_type = largs.alternative_location_map map_name = map_type elseif isnotblank( largs.force_national_map ) then map_type = 'national' map_name = 'Australia' elseif isnotblank( largs.use_lga_map ) then map_type = 'lga' end -- Process the value in map_type if map_type == 'state' or map_type == 'auto' or map_type == 'lga' then map_name = 'Australia ' .. (statenames[state_abbr] or '') map_width = mapwidths[state_abbr] or 270 if map_type == 'lga' then map_name = map_name .. ' ' .. (largs.lga or '') map_width = mapwidths[state_abbr] or 270 end elseif map_type == 'national' or map_type == 'australia' then map_name = 'Australia' end if isnotblank(coords) or isnotblank(coordsa) then else map_type = 'nomap' end -- Finally build the map if map_type ~= 'nomap' then local caption = largs.pushpin_map_caption or '' if caption ~= '' then caption = ' ' .. caption .. ' ' end if isnotblank(coordsa) then return frame:expandTemplate{ title = 'Location map many', args = { map_name, relief = largs.relief or '', label1 = isnotblank(coordsb) and isnotblank(largs.direction_a) and (largs.direction_a .. ' end') or (largs.road_name or ''), coordinates1 = coordsa, position1 = isnotblank(largs.pushpin_label_position_a) and largs.pushpin_label_position_a or 'left', coordinates2 = coordsb, label2 = isnotblank(largs.direction_b) and (largs.direction_b .. ' end') or '', position2 = isnotblank(largs.pushpin_label_position_b) and largs.pushpin_label_position_b or 'left', marksize = 8, float = 'center', caption = caption, border = 'infobox', width = map_width, alt = largs.map_alt or '' }				}		end return frame:expandTemplate{ title = 'Location map', args = { map_name, label = largs.name or '', relief = largs.relief or '', coordinates = coords, marksize = 6, position = largs.pushpin_label_position or '', float = 'center', caption = caption, border = 'infobox', width = map_width, alt = largs.map_alt or '' }		}	end return '' end

return p