<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
		<id>https://wiki.czarnobyl.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3AMapframe</id>
		<title>Moduł:Mapframe - Historia wersji</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.czarnobyl.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3AMapframe"/>
		<link rel="alternate" type="text/html" href="https://wiki.czarnobyl.pl/index.php?title=Modu%C5%82:Mapframe&amp;action=history"/>
		<updated>2026-06-17T12:19:00Z</updated>
		<subtitle>Historia wersji tej strony wiki</subtitle>
		<generator>MediaWiki 1.28.3</generator>

	<entry>
		<id>https://wiki.czarnobyl.pl/index.php?title=Modu%C5%82:Mapframe&amp;diff=4532&amp;oldid=prev</id>
		<title>Bagration: 1 wersja</title>
		<link rel="alternate" type="text/html" href="https://wiki.czarnobyl.pl/index.php?title=Modu%C5%82:Mapframe&amp;diff=4532&amp;oldid=prev"/>
				<updated>2019-02-10T23:38:14Z</updated>
		
		<summary type="html">&lt;p&gt;1 wersja&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style='vertical-align: top;' lang='pl'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Wersja z 23:38, 10 lut 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;' lang='pl'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Brak różnic)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Bagration</name></author>	</entry>

	<entry>
		<id>https://wiki.czarnobyl.pl/index.php?title=Modu%C5%82:Mapframe&amp;diff=4531&amp;oldid=prev</id>
		<title>TheDJ: grah sleepy</title>
		<link rel="alternate" type="text/html" href="https://wiki.czarnobyl.pl/index.php?title=Modu%C5%82:Mapframe&amp;diff=4531&amp;oldid=prev"/>
				<updated>2019-02-07T22:13:12Z</updated>
		
		<summary type="html">&lt;p&gt;grah sleepy&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Note: Originally written on English Wikipedia at https://en.wikipedia.org/wiki/Module:Mapframe&lt;br /&gt;
-- ##### Localisation (L10n) settings #####&lt;br /&gt;
-- Replace values in quotes (&amp;quot;&amp;quot;) with localised values&lt;br /&gt;
&lt;br /&gt;
local L10n = {}&lt;br /&gt;
&lt;br /&gt;
-- Template parameter names (unnumbered versions only)&lt;br /&gt;
--   Specify each as either a single string, or a table of strings (aliases)&lt;br /&gt;
--   Aliases are checked left-to-right, i.e. `{ &amp;quot;one&amp;quot;, &amp;quot;two&amp;quot; }` is equivalent to using `{{{one| {{{two|}}} }}}` in a template&lt;br /&gt;
L10n.para = {&lt;br /&gt;
	display		= &amp;quot;display&amp;quot;,&lt;br /&gt;
	type		= &amp;quot;type&amp;quot;,&lt;br /&gt;
	id              = { &amp;quot;id&amp;quot;, &amp;quot;ids&amp;quot; },&lt;br /&gt;
	from		= &amp;quot;from&amp;quot;,&lt;br /&gt;
	raw		= &amp;quot;raw&amp;quot;,&lt;br /&gt;
	title		= &amp;quot;title&amp;quot;,&lt;br /&gt;
	description	= &amp;quot;description&amp;quot;,&lt;br /&gt;
	strokeColor     = { &amp;quot;stroke-color&amp;quot;, &amp;quot;stroke-colour&amp;quot; },&lt;br /&gt;
	strokeWidth	= &amp;quot;stroke-width&amp;quot;,&lt;br /&gt;
	coord		= &amp;quot;coord&amp;quot;,&lt;br /&gt;
	marker		= &amp;quot;marker&amp;quot;,&lt;br /&gt;
	markerColor	= { &amp;quot;marker-color&amp;quot;, &amp;quot;marker-colour&amp;quot; },&lt;br /&gt;
	text		= &amp;quot;text&amp;quot;,&lt;br /&gt;
	icon		= &amp;quot;icon&amp;quot;,&lt;br /&gt;
	zoom		= &amp;quot;zoom&amp;quot;,&lt;br /&gt;
	frame		= &amp;quot;frame&amp;quot;,&lt;br /&gt;
	plain		= &amp;quot;plain&amp;quot;,&lt;br /&gt;
	frameWidth	= &amp;quot;frame-width&amp;quot;,&lt;br /&gt;
	frameHeight	= &amp;quot;frame-height&amp;quot;,&lt;br /&gt;
	frameCoordinates = { &amp;quot;frame-coordinates&amp;quot;, &amp;quot;frame-coord&amp;quot; }, &lt;br /&gt;
	frameLatitude	= { &amp;quot;frame-lat&amp;quot;, &amp;quot;frame-latitude&amp;quot; },&lt;br /&gt;
	frameLongitude	= { &amp;quot;frame-long&amp;quot;, &amp;quot;frame-longitude&amp;quot; },&lt;br /&gt;
	frameAlign	= &amp;quot;frame-align&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Names of other templates this module depends on&lt;br /&gt;
L10n.template = {&lt;br /&gt;
	Coord		= &amp;quot;Coord&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Error messages&lt;br /&gt;
L10n.error = {&lt;br /&gt;
	badDisplayPara	= &amp;quot;Invalid display parameter&amp;quot;,&lt;br /&gt;
	noCoords	= &amp;quot;Coordinates must be specified on Wikidata or in |&amp;quot; .. ( type(L10n.para.coord)== 'table' and L10n.para.coord[1] or L10n.para.coord ) .. &amp;quot;=&amp;quot;,&lt;br /&gt;
	wikidataCoords	= &amp;quot;Coordinates not found on Wikidata&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Other strings&lt;br /&gt;
L10n.str = {&lt;br /&gt;
	-- valid values for display parameter, e.g. (|display=inline) or (|display=title) or (|display=inline,title) or (|display=title,inline)&lt;br /&gt;
	inline		= &amp;quot;inline&amp;quot;,			&lt;br /&gt;
	title		= &amp;quot;title&amp;quot;,	&lt;br /&gt;
	dsep		= &amp;quot;,&amp;quot;,			-- separator between inline and title (comma in the example above)&lt;br /&gt;
&lt;br /&gt;
	-- valid values for type paramter&lt;br /&gt;
	line		= &amp;quot;line&amp;quot;,		-- geoline feature (e.g. a road)&lt;br /&gt;
	shape		= &amp;quot;shape&amp;quot;,		-- geoshape feature (e.g. a state or province)&lt;br /&gt;
	shapeInverse	= &amp;quot;shape-inverse&amp;quot;,	-- geomask feature (the inverse of a geoshape)&lt;br /&gt;
	data		= &amp;quot;data&amp;quot;,		-- geoJSON data page on Commons&lt;br /&gt;
	point		= &amp;quot;point&amp;quot;,		-- single point feature (coordinates)&lt;br /&gt;
&lt;br /&gt;
	-- valid values for icon, frame, and plain parameters&lt;br /&gt;
	affirmedWords = ' '..table.concat({&lt;br /&gt;
		&amp;quot;add&amp;quot;,&lt;br /&gt;
		&amp;quot;added&amp;quot;,&lt;br /&gt;
		&amp;quot;affirm&amp;quot;,&lt;br /&gt;
		&amp;quot;affirmed&amp;quot;,&lt;br /&gt;
		&amp;quot;include&amp;quot;,&lt;br /&gt;
		&amp;quot;included&amp;quot;,&lt;br /&gt;
		&amp;quot;on&amp;quot;,&lt;br /&gt;
		&amp;quot;true&amp;quot;,&lt;br /&gt;
		&amp;quot;yes&amp;quot;,&lt;br /&gt;
		&amp;quot;y&amp;quot;&lt;br /&gt;
	}, ' ')..' ',&lt;br /&gt;
	declinedWords = ' '..table.concat({&lt;br /&gt;
		&amp;quot;decline&amp;quot;,&lt;br /&gt;
		&amp;quot;declined&amp;quot;,&lt;br /&gt;
		&amp;quot;exclude&amp;quot;,&lt;br /&gt;
		&amp;quot;excluded&amp;quot;,&lt;br /&gt;
		&amp;quot;false&amp;quot;,&lt;br /&gt;
		&amp;quot;none&amp;quot;,&lt;br /&gt;
		&amp;quot;not&amp;quot;,&lt;br /&gt;
		&amp;quot;no&amp;quot;,&lt;br /&gt;
		&amp;quot;n&amp;quot;,&lt;br /&gt;
		&amp;quot;off&amp;quot;,&lt;br /&gt;
		&amp;quot;omit&amp;quot;,&lt;br /&gt;
		&amp;quot;omitted&amp;quot;,&lt;br /&gt;
		&amp;quot;remove&amp;quot;,&lt;br /&gt;
		&amp;quot;removed&amp;quot;&lt;br /&gt;
	}, ' ')..' '&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Default values for parameters&lt;br /&gt;
L10n.defaults = {&lt;br /&gt;
	display		= L10n.str.inline,&lt;br /&gt;
	text		= &amp;quot;Map&amp;quot;,&lt;br /&gt;
	frameWidth	= &amp;quot;300&amp;quot;,&lt;br /&gt;
	frameHeight	= &amp;quot;200&amp;quot;,&lt;br /&gt;
	markerColor	= &amp;quot;5E74F3&amp;quot;,&lt;br /&gt;
	strokeColor	= &amp;quot;#ff0000&amp;quot;,&lt;br /&gt;
	strokeWidth	= 6&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- #### End of L10n settings ####&lt;br /&gt;
&lt;br /&gt;
function getParameterValue(args, param_id, suffix)&lt;br /&gt;
	suffix = suffix or ''&lt;br /&gt;
	if type( L10n.para[param_id] ) ~= 'table' then&lt;br /&gt;
		return args[L10n.para[param_id]..suffix]&lt;br /&gt;
	end&lt;br /&gt;
	for _i, paramAlias in ipairs(L10n.para[param_id]) do&lt;br /&gt;
		if args[paramAlias..suffix] then&lt;br /&gt;
			return args[paramAlias..suffix]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function setCleanArgs(argsTable)&lt;br /&gt;
	local cleanArgs = {}&lt;br /&gt;
	for key, val in pairs(argsTable) do&lt;br /&gt;
		if type(val) == 'string' then&lt;br /&gt;
			val = val:match('^%s*(.-)%s*$')&lt;br /&gt;
			if val ~= '' then&lt;br /&gt;
				cleanArgs[key] = val:gsub('%c',' ')&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cleanArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return cleanArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function isAffirmed(val)&lt;br /&gt;
	if not(val) then return false end&lt;br /&gt;
	return string.find(L10n.str.affirmedWords, ' '..val..' ', 1, true ) and true or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function isDeclined(val)&lt;br /&gt;
	if not(val) then return false end&lt;br /&gt;
	return string.find(L10n.str.declinedWords , ' '..val..' ', 1, true ) and true or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function makeContent(args)&lt;br /&gt;
	if getParameterValue(args, 'raw') then&lt;br /&gt;
		return getParameterValue(args, 'raw')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local content = {};&lt;br /&gt;
	local contentIndex = '';&lt;br /&gt;
	local nextTypeOrFromExists = getParameterValue(args, 'type') or getParameterValue(args, 'from')&lt;br /&gt;
	while nextTypeOrFromExists do&lt;br /&gt;
		local contentArgs = {}&lt;br /&gt;
		for k, v in pairs(args) do&lt;br /&gt;
			if string.match(k, '.*'..contentIndex) then&lt;br /&gt;
				contentArgs[string.gsub(k, contentIndex, '')] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if contentIndex == '' then contentIndex = 1 end&lt;br /&gt;
		content[contentIndex] = makeContentJson(contentArgs)&lt;br /&gt;
		contentIndex = contentIndex + 1&lt;br /&gt;
		nextTypeOrFromExists = getParameterValue(args, 'type', contentIndex) or getParameterValue(args, 'from', contentIndex)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Single item, no array needed&lt;br /&gt;
	if #content==1 then return content[1] end&lt;br /&gt;
&lt;br /&gt;
	--Multiple items get placed in a FeatureCollection&lt;br /&gt;
	local contentArray = '[\n' .. table.concat( content, ',\n') .. '\n]'&lt;br /&gt;
	return contentArray&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function parseCoords(coords)&lt;br /&gt;
	local parts = mw.text.split((mw.ustring.match(coords,'[_%.%d]+[NS][_%.%d]+[EW]') or ''), '_')&lt;br /&gt;
&lt;br /&gt;
	local lat_d = tonumber(parts[1])&lt;br /&gt;
	local lat_m = tonumber(parts[2]) -- nil if coords are in decimal format&lt;br /&gt;
	local lat_s = lat_m and tonumber(parts[3]) -- nil if coords are either in decimal format or degrees and minutes only&lt;br /&gt;
	local lat = lat_d + (lat_m or 0)/60 + (lat_s or 0)/3600&lt;br /&gt;
	if parts[#parts/2] == 'S' then&lt;br /&gt;
		lat = lat * -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local long_d = tonumber(parts[1+#parts/2])&lt;br /&gt;
	local long_m = tonumber(parts[2+#parts/2]) -- nil if coords are in decimal format&lt;br /&gt;
	local long_s = long_m and tonumber(parts[3+#parts/2]) -- nil if coords are either in decimal format or degrees and minutes only&lt;br /&gt;
	local long = long_d + (long_m or 0)/60 + (long_s or 0)/3600&lt;br /&gt;
	if parts[#parts] == 'W' then&lt;br /&gt;
		long = long * -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return lat, long&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function wikidataCoords(item_id)&lt;br /&gt;
	if not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then&lt;br /&gt;
		error(L10n.error.noCoords, 0)&lt;br /&gt;
	end&lt;br /&gt;
	local coordStatements = mw.wikibase.getBestStatements(item_id, 'P625')&lt;br /&gt;
	if not coordStatements or #coordStatements == 0 then&lt;br /&gt;
		error(L10n.error.wikidataCoords, 0)&lt;br /&gt;
	end&lt;br /&gt;
	local hasNoValue = ( coordStatements[1].mainsnak and coordStatements[1].mainsnak.snaktype == 'novalue' )&lt;br /&gt;
	if hasNoValue then&lt;br /&gt;
		error(L10n.error.wikidataCoords, 0)&lt;br /&gt;
	end&lt;br /&gt;
	local wdCoords = coordStatements[1]['mainsnak']['datavalue']['value']&lt;br /&gt;
	return tonumber(wdCoords['latitude']), tonumber(wdCoords['longitude'])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function makeCoords(args, plainOutput) &lt;br /&gt;
	local coords, lat, long&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	if getParameterValue(args, 'coord') then&lt;br /&gt;
		coords = frame:preprocess( getParameterValue(args, 'coord') )&lt;br /&gt;
		lat, long = parseCoords(coords)&lt;br /&gt;
	else&lt;br /&gt;
		lat, long = wikidataCoords(getParameterValue(args, 'id') or mw.wikibase.getEntityIdForCurrentPage())&lt;br /&gt;
	end&lt;br /&gt;
	if plainOutput then&lt;br /&gt;
		return lat, long&lt;br /&gt;
	end&lt;br /&gt;
	return {[0] = long, [1] = lat}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function makeContentJson(contentArgs)&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	if getParameterValue(contentArgs, 'type') == L10n.str.point then&lt;br /&gt;
		data.type = &amp;quot;Feature&amp;quot;&lt;br /&gt;
		data.geometry = {&lt;br /&gt;
			type = &amp;quot;Point&amp;quot;,&lt;br /&gt;
			coordinates = makeCoords(contentArgs)&lt;br /&gt;
		}&lt;br /&gt;
		data.properties = {&lt;br /&gt;
			title = getParameterValue(contentArgs, 'title') or mw.getCurrentFrame():getParent():getTitle(),&lt;br /&gt;
			[&amp;quot;marker-symbol&amp;quot;] = getParameterValue(contentArgs, 'marker') or  L10n.defaults.marker,&lt;br /&gt;
			[&amp;quot;marker-color&amp;quot;] = getParameterValue(contentArgs, 'markerColor') or L10n.defaults.markerColor&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		data.type = &amp;quot;ExternalData&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		if getParameterValue(contentArgs, 'type') == L10n.str.data or getParameterValue(contentArgs, 'from') then&lt;br /&gt;
			data.service = &amp;quot;page&amp;quot;&lt;br /&gt;
		elseif getParameterValue(contentArgs, 'type') == L10n.str.line then&lt;br /&gt;
			data.service = &amp;quot;geoline&amp;quot;&lt;br /&gt;
		elseif getParameterValue(contentArgs, 'type') == L10n.str.shape then&lt;br /&gt;
			data.service = &amp;quot;geoshape&amp;quot;&lt;br /&gt;
		elseif getParameterValue(contentArgs, 'type') == L10n.str.shapeInverse then&lt;br /&gt;
			data.service = &amp;quot;geomask&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if getParameterValue(contentArgs, 'id') or (not (getParameterValue(contentArgs, 'from')) and mw.wikibase.getEntityIdForCurrentPage()) then&lt;br /&gt;
			data.ids = getParameterValue(contentArgs, 'id') or mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
		else &lt;br /&gt;
			data.title = getParameterValue(contentArgs, 'from')&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		data.properties = {&lt;br /&gt;
			stroke = getParameterValue(contentArgs, 'strokeColor') or L10n.defaults.strokeColor,&lt;br /&gt;
			[&amp;quot;stroke-width&amp;quot;] = tonumber(getParameterValue(contentArgs, 'strokeWidth')) or L10n.defaults.strokeWidth&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	data.properties.title = getParameterValue(contentArgs, 'title') or mw.getCurrentFrame():preprocess('{{PAGENAME}}')&lt;br /&gt;
	if getParameterValue(contentArgs, 'description') then&lt;br /&gt;
		data.properties.description = getParameterValue(contentArgs, 'description')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.text.jsonEncode(data)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function makeTagAttribs(args, isTitle)&lt;br /&gt;
	local attribs = {}&lt;br /&gt;
	if getParameterValue(args, 'zoom') then&lt;br /&gt;
		attribs.zoom = getParameterValue(args, 'zoom')&lt;br /&gt;
	end&lt;br /&gt;
	if isDeclined(getParameterValue(args, 'icon')) then&lt;br /&gt;
		attribs.class = &amp;quot;no-icon&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if getParameterValue(args, 'type') == L10n.str.point then&lt;br /&gt;
		local lat, long = makeCoords(args, 'plainOutput')&lt;br /&gt;
		attribs.latitude = tostring(lat)&lt;br /&gt;
		attribs.longitude = tostring(long)&lt;br /&gt;
	end&lt;br /&gt;
	if isAffirmed(getParameterValue(args, 'frame')) and not(isTitle) then&lt;br /&gt;
		attribs.width = getParameterValue(args, 'frameWidth') or L10n.defaults.frameWidth&lt;br /&gt;
		attribs.height = getParameterValue(args, 'frameHeight') or L10n.defaults.frameHeight&lt;br /&gt;
		if getParameterValue(args, 'frameCoordinates') then&lt;br /&gt;
			local frameLat, frameLong = parseCoords(getParameterValue(args, 'frameCoordinates'))&lt;br /&gt;
			attribs.latitude = frameLat&lt;br /&gt;
			attribs.longitude = frameLong&lt;br /&gt;
		else&lt;br /&gt;
			if getParameterValue(args, 'frameLatitude') then&lt;br /&gt;
				attribs.latitude = getParameterValue(args, 'frameLatitude')&lt;br /&gt;
			end&lt;br /&gt;
			if getParameterValue(args, 'frameLongitude') then&lt;br /&gt;
				attribs.longitude = getParameterValue(args, 'frameLongitude')&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if not attribs.latitude and not attribs.longitude then&lt;br /&gt;
			local success, lat, long = pcall(wikidataCoords, getParameterValue(args, 'id') or mw.wikibase.getEntityIdForCurrentPage())&lt;br /&gt;
			if success then&lt;br /&gt;
				attribs.latitude = tostring(lat)&lt;br /&gt;
				attribs.longitude = tostring(long)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if getParameterValue(args, 'frameAlign') then&lt;br /&gt;
			attribs.align = getParameterValue(args, 'frameAlign')&lt;br /&gt;
		end&lt;br /&gt;
		if isAffirmed(getParameterValue(args, 'plain')) then&lt;br /&gt;
			attribs.frameless = &amp;quot;1&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			attribs.text = getParameterValue(args, 'text') or L10n.defaults.text&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		attribs.text = getParameterValue(args, 'text') or L10n.defaults.text&lt;br /&gt;
	end&lt;br /&gt;
	return attribs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function makeTitleOutput(args, tagContent)&lt;br /&gt;
 	local titleTag = mw.text.tag('maplink', makeTagAttribs(args, true), tagContent)&lt;br /&gt;
	local spanAttribs = {&lt;br /&gt;
		style = &amp;quot;font-size: small;&amp;quot;,&lt;br /&gt;
		id = &amp;quot;coordinates&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	return mw.text.tag('span', spanAttribs, titleTag)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function makeInlineOutput(args, tagContent)&lt;br /&gt;
	local tagName = 'maplink'&lt;br /&gt;
	if getParameterValue(args, 'frame') then&lt;br /&gt;
		tagName = 'mapframe'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.text.tag(tagName, makeTagAttribs(args), tagContent)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Entry point for templates&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local parent = frame.getParent(frame)&lt;br /&gt;
	local output = p._main(parent.args)&lt;br /&gt;
	return frame:preprocess(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Entry point for modules&lt;br /&gt;
function p._main(_args)&lt;br /&gt;
	local args = setCleanArgs(_args)&lt;br /&gt;
 &lt;br /&gt;
	local tagContent = makeContent(args)&lt;br /&gt;
&lt;br /&gt;
	local display = mw.text.split(getParameterValue(args, 'display') or L10n.defaults.display, '%s*' .. L10n.str.dsep .. '%s*')&lt;br /&gt;
	local displayInTitle = display[1] ==  L10n.str.title or display[2] ==  L10n.str.title&lt;br /&gt;
	local displayInline = display[1] ==  L10n.str.inline or display[2] ==  L10n.str.inline&lt;br /&gt;
&lt;br /&gt;
	local output&lt;br /&gt;
	if displayInTitle and displayInline then&lt;br /&gt;
		output = makeTitleOutput(args, tagContent) .. makeInlineOutput(args, tagContent)&lt;br /&gt;
	elseif displayInTitle then&lt;br /&gt;
		output = makeTitleOutput(args, tagContent)&lt;br /&gt;
	elseif displayInline then&lt;br /&gt;
		output = makeInlineOutput(args, tagContent)&lt;br /&gt;
	else&lt;br /&gt;
		error(L10n.error.badDisplayPara)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>TheDJ</name></author>	</entry>

	</feed>