<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
	<id>https://wiki-raamsdonk.nl/index.php?action=history&amp;feed=atom&amp;title=Module%3AMap</id>
	<title>Module:Map - Bewerkingsoverzicht</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-raamsdonk.nl/index.php?action=history&amp;feed=atom&amp;title=Module%3AMap"/>
	<link rel="alternate" type="text/html" href="https://wiki-raamsdonk.nl/index.php?title=Module:Map&amp;action=history"/>
	<updated>2026-08-10T13:44:59Z</updated>
	<subtitle>Bewerkingsoverzicht voor deze pagina op de wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki-raamsdonk.nl/index.php?title=Module:Map&amp;diff=127563&amp;oldid=prev</id>
		<title>Colani: 1 versie geïmporteerd: Category:Commons templates-i18n</title>
		<link rel="alternate" type="text/html" href="https://wiki-raamsdonk.nl/index.php?title=Module:Map&amp;diff=127563&amp;oldid=prev"/>
		<updated>2024-07-29T09:58:50Z</updated>

		<summary type="html">&lt;p&gt;1 versie geïmporteerd: Category:Commons templates-i18n&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nieuwe pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[  &lt;br /&gt;
  __  __           _       _        __  __             &lt;br /&gt;
 |  \/  | ___   __| |_   _| | ___ _|  \/  | __ _ _ __  &lt;br /&gt;
 | |\/| |/ _ \ / _` | | | | |/ _ (_) |\/| |/ _` | &amp;#039;_ \ &lt;br /&gt;
 | |  | | (_) | (_| | |_| | |  __/_| |  | | (_| | |_) |&lt;br /&gt;
 |_|  |_|\___/ \__,_|\__,_|_|\___(_)_|  |_|\__,_| .__/ &lt;br /&gt;
                                                |_|                                                                                                &lt;br /&gt;
This module is intended to be the engine behind &amp;quot;Template:Map.&lt;br /&gt;
&lt;br /&gt;
Please do not modify this code without applying the changes first at&lt;br /&gt;
&amp;quot;Module:Map/sandbox&amp;quot; and testing at &amp;quot;Module:Map/testcases&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Authors and maintainers:&lt;br /&gt;
* User:Jarekt - original version &lt;br /&gt;
]]&lt;br /&gt;
-- =======================================&lt;br /&gt;
-- === Dependencies ======================&lt;br /&gt;
-- =======================================&lt;br /&gt;
require(&amp;#039;strict&amp;#039;) -- used for debugging purposes as it detects cases of unintended global variables&lt;br /&gt;
local ISOdate =   require(&amp;#039;Module:ISOdate&amp;#039;)._ISOdate -- date localization&lt;br /&gt;
local labels  =   require(&amp;quot;Module:I18n/map&amp;quot;)                        -- internationalization of &lt;br /&gt;
local core    =   require(&amp;#039;Module:Core&amp;#039;)&lt;br /&gt;
local formatnum = require(&amp;#039;Module:Formatnum&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- ==================================================&lt;br /&gt;
-- === Internal functions ===========================&lt;br /&gt;
-- ==================================================&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local function getBareLabel(id, userLang) &lt;br /&gt;
-- code equivalent to require(&amp;quot;Module:Wikidata label&amp;quot;)._getLabel with Wikidata=- option&lt;br /&gt;
	local label, link&lt;br /&gt;
	-- build language fallback list&lt;br /&gt;
	local langList = mw.language.getFallbacksFor(userLang)&lt;br /&gt;
	table.insert(langList, 1, userLang)&lt;br /&gt;
	for _, lang in ipairs(langList) do  -- loop over language fallback list looking for label in the specific language&lt;br /&gt;
		label = mw.wikibase.getLabelByLang(id, lang)&lt;br /&gt;
		if label then break end                    -- label found and we are done&lt;br /&gt;
	end	&lt;br /&gt;
	return label or id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
local function message(name, lang)&lt;br /&gt;
	return mw.message.new( &amp;#039;wm-license-&amp;#039;..name ):inLanguage(lang):plain()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
-- === This function is just responsible for producing HTML of the  ===&lt;br /&gt;
-- === template. At this stage all the fields are already filed     ===&lt;br /&gt;
-- ====================================================================&lt;br /&gt;
local function build_html(args, cats)&lt;br /&gt;
	local lang = args.lang -- user&amp;#039;s language&lt;br /&gt;
	local dir  = mw.language.new( lang ):getDir()    -- get text direction&lt;br /&gt;
	local desTag = mw.ustring.format(&amp;#039;&amp;lt;span class=&amp;quot;summary fn&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;, args.pagename)&lt;br /&gt;
	local prmTag = mw.ustring.format(&amp;quot;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;([[%s|%s]])&amp;lt;/small&amp;gt;&amp;quot;, message(&amp;#039;information-permission-reusing-link&amp;#039;, lang), &lt;br /&gt;
								 message(&amp;#039;information-permission-reusing-text&amp;#039;, lang))&lt;br /&gt;
	&lt;br /&gt;
	-- files with no source will be flagged&lt;br /&gt;
	if (not args.source) and (args.strict==true) and (args.demo or (args.namespace==6)) then&lt;br /&gt;
		args.nosource = mw.getCurrentFrame():expandTemplate{ title = &amp;#039;Source missing&amp;#039; }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- boolean field controling if horizontal section bar will be added&lt;br /&gt;
	args.addGeotemporalBar   = args.demo or args.location or args.map_date or args.scale or args.zoom or args.projection or args.centroid or args.heading or args.latitude or (args.warp_status and not args.warp_status==&amp;quot;skip&amp;quot;) or args.other_fields_2&lt;br /&gt;
	args.addBibliographicBar = args.demo or args.set or args.sheet or args.book_title or args.book_author or args.volume or args.page or args.language or args.other_fields_3 or args.place_of_publication or args.publisher or args.printer or args.publication_date or args.authority&lt;br /&gt;
	args.addArchivalBar      = args.demo or args.institution or args.id or args.dimensions or args.scan_resolution or args.other_fields_4 or args.medium or args.inscriptions or args.notes or args.references or args.other_fields_5&lt;br /&gt;
	args.addDigitalBar		 = args.demo&lt;br /&gt;
	&lt;br /&gt;
	local nCol = 2&lt;br /&gt;
	if not args.image and args.demo then&lt;br /&gt;
		args.image = args.demo_image&lt;br /&gt;
	end&lt;br /&gt;
	if args.image  then&lt;br /&gt;
		nCol = 3&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Top line &lt;br /&gt;
	local top, results = {}, {}&lt;br /&gt;
	if args.name then&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;&amp;lt;span class=&amp;quot;fn&amp;quot; id=&amp;quot;artwork&amp;quot;&amp;gt;&amp;lt;bdi&amp;gt;%s\n&amp;lt;/bdi&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;, args.name ) )&lt;br /&gt;
	end&lt;br /&gt;
	if args.linkback then -- Wikidata Link&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;[[File:Blue pencil.svg|15px|%s|link=%s]]&amp;#039;, args.linkback, args.linkback) )&lt;br /&gt;
	end	&lt;br /&gt;
	if args.wikidata then -- Wikidata Link&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;[[File:Wikidata-logo.svg|20px|wikidata:%s|link=wikidata:%s]]&amp;#039;, args.wikidata, args.wikidata) )&lt;br /&gt;
	end&lt;br /&gt;
	if args.QS then -- quick_statement link to upload missing info to wikidata&lt;br /&gt;
		table.insert(top, string.format(&amp;#039;%s&amp;#039;, args.QS) )&lt;br /&gt;
	end&lt;br /&gt;
	if #top&amp;gt;0 then&lt;br /&gt;
		local line = string.format(&amp;#039;&amp;lt;th colspan=&amp;quot;%i&amp;quot; style=&amp;quot;background-color:#ccf; font-weight:bold; border:1px solid #aaa; text-align: start&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&amp;#039;, nCol, table.concat(top, &amp;#039;&amp;amp;nbsp;&amp;#039;)) &lt;br /&gt;
		table.insert(results, string.format(&amp;#039;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;\n%s\n&amp;lt;/tr&amp;gt;\n&amp;#039;, line))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- add other fields&lt;br /&gt;
	local params = {&lt;br /&gt;
		-- field name                   machine readable tag                         field name i18n approach                     field value wrapper&lt;br /&gt;
--		{field=&amp;#039;representation&amp;#039;       , id=&amp;#039;fileinfotpl_representation&amp;#039;            , tag=&amp;#039;P6243&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;title&amp;#039;                , id=&amp;#039;fileinfotpl_art_title&amp;#039;                 , tag=&amp;#039;P1476&amp;#039;,              wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;subtitle&amp;#039;             , id=&amp;#039;fileinfotpl_art_subtitle&amp;#039;              , tag=&amp;#039;P1680&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;description&amp;#039;          , id=&amp;#039;fileinfotpl_desc&amp;#039;                      , tag=&amp;#039;Q1200750&amp;#039;,    wrapper=&amp;#039;&amp;lt;div class=&amp;quot;description&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;, tag2=desTag},&lt;br /&gt;
		{field=&amp;#039;other_fields_1&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;legend&amp;#039;			      , id=&amp;#039;fileinfotpl_map_legend&amp;#039;				   , tag=&amp;#039;legend&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;adjacent_sheets&amp;#039;      , id=&amp;#039;fileinfotpl_adjacent_sheets&amp;#039;		   , tag=&amp;#039;adjacentsheets&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;sheet_index&amp;#039;          , id=&amp;#039;fileinfotpl_sheet_index&amp;#039;		       , tag=&amp;#039;sheetindex&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;date&amp;#039;                 , id=&amp;#039;fileinfotpl_date&amp;#039;                      , tag=&amp;#039;wm-license-information-date&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;source&amp;#039;               , id=&amp;#039;fileinfotpl_src&amp;#039;                       , tag=&amp;#039;wm-license-information-source&amp;#039;}, &lt;br /&gt;
		{field=&amp;#039;nosource&amp;#039;             , id=&amp;#039;fileinfotpl_nosrc&amp;#039;                     , tag=&amp;#039;wm-license-information-source&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;author&amp;#039;               , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;P170&amp;#039;,         wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;contributor&amp;#039;          , id=&amp;#039;fileinfotpl_contrib&amp;#039;                   , tag=&amp;#039;Q20204892&amp;#039;,    wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;credit_line&amp;#039;          , id=&amp;#039;fileinfotpl_art_credit_line&amp;#039;           , tag=&amp;#039;wm-license-artwork-credit-line&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;permission&amp;#039;           , id=&amp;#039;fileinfotpl_perm&amp;#039;                      , tag=&amp;#039;wm-license-information-permission&amp;#039;, tag2=prmTag},&lt;br /&gt;
		-- Geotemporal Data&lt;br /&gt;
		{field=&amp;#039;addGeotemporalBar&amp;#039;                                                 , tag=&amp;#039;geotemporal_data&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;map_date&amp;#039;             , id=&amp;#039;fileinfotpl_map_date&amp;#039;                  , tag=&amp;#039;P2913&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;location&amp;#039;             , id=&amp;#039;fileinfotpl_map_location&amp;#039;              , tag=&amp;#039;maplocation&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;type&amp;#039;                 , id=&amp;#039;fileinfotpl_type&amp;#039;                      , tag=&amp;#039;type&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;projection&amp;#039;           , id=&amp;#039;fileinfotpl_map_projection&amp;#039;            , tag=&amp;#039;P3037&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;scale&amp;#039;                , id=&amp;#039;fileinfotpl_map_scale&amp;#039;                 , tag=&amp;#039;P1752&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;zoom&amp;#039;	              , id=&amp;#039;fileinfotpl_map_zoom&amp;#039;           	   , tag=&amp;#039;P6592&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;heading&amp;#039;              , id=&amp;#039;fileinfotpl_map_heading&amp;#039;               , tag=&amp;#039;heading&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;bbox&amp;#039;                 , id=&amp;#039;fileinfotpl_map_bbox&amp;#039;		           , tag=&amp;#039;limits&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;centroid&amp;#039;             , id=&amp;#039;fileinfotpl_map_centroid&amp;#039;              , tag=&amp;#039;Q511093&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;warp&amp;#039;                 , id=&amp;#039;fileinfotpl_map_warped&amp;#039;		           , tag=&amp;#039;warper&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields_2&amp;#039;},&lt;br /&gt;
		-- Bibliographic Data&lt;br /&gt;
		{field=&amp;#039;addBibliographicBar&amp;#039;                                               , tag=&amp;#039;bibliographic_data&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;set&amp;#039;                  , id=&amp;#039;fileinfotpl_map_parent&amp;#039;				   , tag=&amp;#039;P179&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;sheet&amp;#039;                , id=&amp;#039;fileinfotpl_map_sheet&amp;#039;				   , tag=&amp;#039;sheet&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;book_title&amp;#039;           , id=&amp;#039;fileinfotpl_book_title&amp;#039;                , tag=&amp;#039;Q732577&amp;#039;,              wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;book_author&amp;#039;          , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;wm-license-information-author&amp;#039;,         wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;volume&amp;#039;               , id=&amp;#039;fileinfotpl_book_volume&amp;#039;               , tag=&amp;#039;P478&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;page&amp;#039;                 , id=&amp;#039;fileinfotpl_book_volume&amp;#039;               , tag=&amp;#039;P304&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;language&amp;#039;             , id=&amp;#039;fileinfotpl_book_language&amp;#039;             , tag=&amp;#039;Q34770&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields_3&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;publication_place&amp;#039;    , id=&amp;#039;fileinfotpl_book_place-of-publication&amp;#039; , tag=&amp;#039;wm-license-book-place-of-publication&amp;#039;,  },&lt;br /&gt;
		{field=&amp;#039;publisher&amp;#039;            , id=&amp;#039;fileinfotpl_book_publisher&amp;#039;            , tag=&amp;#039;wm-license-book-publisher&amp;#039;,             wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;printer&amp;#039;              , id=&amp;#039;fileinfotpl_book_printer&amp;#039;              , tag=&amp;#039;P872&amp;#039;,               wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;publication_date&amp;#039;     , id=&amp;#039;fileinfotpl_publication_date&amp;#039;          , tag=&amp;#039;P577&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;authority&amp;#039;            , id=&amp;#039;fileinfotpl_art_authority&amp;#039;             , tag=&amp;#039;Q36524&amp;#039;},&lt;br /&gt;
		-- Archival Data&lt;br /&gt;
		{field=&amp;#039;addArchivalBar&amp;#039;                                                    , tag=&amp;#039;archival_data&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;institution&amp;#039;          , id=&amp;#039;fileinfotpl_art_gallery&amp;#039;               , tag=&amp;#039;Q2668072&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;id&amp;#039;                   , id=&amp;#039;fileinfotpl_art_id&amp;#039;                    , tag=&amp;#039;wm-license-artwork-id&amp;#039;,                 wrapper=&amp;#039;&amp;lt;div class=&amp;quot;identifier&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;dimensions&amp;#039;           , id=&amp;#039;fileinfotpl_art_dimensions&amp;#039;            , tag=&amp;#039;wm-license-artwork-dimensions&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields_4&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;medium&amp;#039;               , id=&amp;#039;fileinfotpl_art_medium&amp;#039;                , tag=&amp;#039;wm-license-artwork-medium&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;inscriptions&amp;#039;         , id=&amp;#039;fileinfotpl_art_inscriptions&amp;#039;          , tag=&amp;#039;wm-license-artwork-inscriptions&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;notes&amp;#039;                , id=&amp;#039;fileinfotpl_art_notes&amp;#039;                 , tag=&amp;#039;wm-license-artwork-notes&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;references&amp;#039;           , id=&amp;#039;fileinfotpl_art_references&amp;#039;            , tag=&amp;#039;artwork-references&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_fields_5&amp;#039;},&lt;br /&gt;
		-- Data about the digital copy&lt;br /&gt;
		{field=&amp;#039;addDigitalBar&amp;#039;                                              	   , tag=&amp;#039;digital_data&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;resolution&amp;#039;	          , id=&amp;#039;fileinfotpl_map_scan_resolution&amp;#039;	   , tag=&amp;#039;resolution&amp;#039;},&lt;br /&gt;
		{field=&amp;#039;other_versions&amp;#039;       , id=&amp;#039;fileinfotpl_ver&amp;#039;                       , tag=&amp;#039;wm-license-information-other-versions&amp;#039;}, &lt;br /&gt;
		{field=&amp;#039;image&amp;#039;},        --  (former: imgen)    {{Igen/map}}&lt;br /&gt;
		-- unused extras:&lt;br /&gt;
		-- {field=&amp;#039;imgen&amp;#039;},     --  deprecated &amp;#039;image&amp;#039; alias&lt;br /&gt;
		-- {field=&amp;#039;help_warp&amp;#039;}, --  ignore deprecated relict, but don&amp;#039;t show param error&lt;br /&gt;
		-- {field=&amp;#039;artist&amp;#039;               , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;artwork-artist&amp;#039;,             wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;editor&amp;#039;               , id=&amp;#039;fileinfotpl_book_editor&amp;#039;               , tag=&amp;#039;book-editor&amp;#039;,                wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;translator&amp;#039;           , id=&amp;#039;fileinfotpl_book_translator&amp;#039;           , tag=&amp;#039;book-translator&amp;#039;,            wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;illustrator&amp;#039;          , id=&amp;#039;fileinfotpl_book_illustrator&amp;#039;          , tag=&amp;#039;book-illustrator&amp;#039;,           wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;architect&amp;#039;            , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;Q42973&amp;#039;,                                wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;designer&amp;#039;             , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;Q5322166&amp;#039;,                              wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;photographer&amp;#039;         , id=&amp;#039;fileinfotpl_aut&amp;#039;                       , tag=&amp;#039;Q33231&amp;#039;,                                wrapper=&amp;#039;&amp;lt;div class=&amp;quot;fn value&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;subtitle&amp;#039;             , id=&amp;#039;fileinfotpl_book_subtitle&amp;#039;             , tag=&amp;#039;book-subtitle&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;series_title&amp;#039;         , id=&amp;#039;fileinfotpl_book_series-title&amp;#039;         , tag=&amp;#039;book-series-title&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;edition&amp;#039;              , id=&amp;#039;fileinfotpl_edition&amp;#039;                   , tag=&amp;#039;book-edition&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;object_type&amp;#039;          , id=&amp;#039;fileinfotpl_art_object_type&amp;#039;           , tag=&amp;#039;object_type&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;genre&amp;#039;                , id=&amp;#039;fileinfotpl_art_genre&amp;#039;                 , tag=&amp;#039;Q483394&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;original_description&amp;#039; , id=&amp;#039;fileinfotpl_desc&amp;#039;                      , tag=&amp;#039;original_description&amp;#039;,                  wrapper=&amp;#039;&amp;lt;div class=&amp;quot;description&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;pageoverview&amp;#039;         , id=&amp;#039;fileinfotpl_book-page-overview&amp;#039;        , tag=&amp;#039;book-page-overview&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;depicted_people&amp;#039;      , id=&amp;#039;fileinfotpl_art_depicted_people&amp;#039;       , tag=&amp;#039;depicted_people&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;depicted_place&amp;#039;       , id=&amp;#039;fileinfotpl_art_depicted_place&amp;#039;        , tag=&amp;#039;depicted_place&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;depicted_part&amp;#039;        , id=&amp;#039;fileinfotpl_art_depicted_part&amp;#039;         , tag=&amp;#039;P5961&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;department&amp;#039;           , id=&amp;#039;fileinfotpl_art_location&amp;#039;              , tag=&amp;#039;artwork-current-location&amp;#039;,   wrapper=&amp;#039;&amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;\n%s&amp;lt;/div&amp;gt;&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;coordinates&amp;#039;          , id=&amp;#039;fileinfo-paramfield&amp;#039;                   , tag=&amp;#039;ObjectLocation&amp;#039;}, &lt;br /&gt;
		-- {field=&amp;#039;place_of_creation&amp;#039;    , id=&amp;#039;fileinfotpl_art_creation_place&amp;#039;        , tag=&amp;#039;place_of_creation&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;place_of_discovery&amp;#039;   , id=&amp;#039;fileinfotpl_art_discovery_place&amp;#039;       , tag=&amp;#039;place_of_discovery&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;object_history&amp;#039;       , id=&amp;#039;fileinfotpl_art_object_history&amp;#039;        , tag=&amp;#039;artwork-object-history&amp;#039;},&lt;br /&gt;
		-- {field=&amp;#039;exhibition_history&amp;#039;   , id=&amp;#039;fileinfotpl_art_exhibition_history&amp;#039;    , tag=&amp;#039;exhibition_history&amp;#039;},&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
	for _, param in ipairs(params) do&lt;br /&gt;
		local field, tag, cell1, cell2, id&lt;br /&gt;
		field = args[param.field]&lt;br /&gt;
		if param.id then -- skip &amp;quot;other fields&amp;quot; parameter&lt;br /&gt;
			id = mw.ustring.format(&amp;#039;id=&amp;quot;%s&amp;quot; &amp;#039;, param.id)&lt;br /&gt;
			if field or (args.demo and param.tag and (param.field ~= &amp;#039;source&amp;#039;)) then  -- skip the row if  no field&lt;br /&gt;
				tag = param.tag or &amp;#039;bad&amp;#039;&lt;br /&gt;
				if string.sub(tag,1,10) == &amp;#039;wm-license&amp;#039; then  -- translate using MediaWiki message&lt;br /&gt;
					tag = mw.message.new( tag ):inLanguage(lang):plain() -- label message in args.lang language&lt;br /&gt;
				elseif string.match(tag, &amp;quot;^[QP]%d+$&amp;quot;) then    -- translate based on Wikidata labels&lt;br /&gt;
					tag = mw.language.new(lang):ucfirst(getBareLabel(tag, lang))&lt;br /&gt;
				elseif labels[tag] then                       -- translate using LangSwitch and Module:I18n/map&lt;br /&gt;
					tag = mw.language.new(lang):ucfirst(core.langSwitch(labels[tag], args.lang))&lt;br /&gt;
				end&lt;br /&gt;
				field = (param.wrapper and mw.ustring.format(param.wrapper, field or &amp;#039;&amp;#039;)) or field -- apply wrapper if provided&lt;br /&gt;
				cell1 = mw.ustring.format(&amp;#039;&amp;lt;td %sclass=&amp;quot;fileinfo-paramfield&amp;quot; lang=&amp;quot;%s&amp;quot;&amp;gt;%s%s&amp;lt;/td&amp;gt;\n&amp;#039;, id or &amp;#039;&amp;#039;, lang, tag,  param.tag2 or &amp;#039;&amp;#039;)&lt;br /&gt;
				cell2 = mw.ustring.format(&amp;#039;&amp;lt;td&amp;gt;\n%s&amp;lt;/td&amp;gt;&amp;#039;, field or &amp;#039;&amp;#039;)&lt;br /&gt;
				field = mw.ustring.format(&amp;#039;&amp;lt;tr style=&amp;quot;vertical-align: top&amp;quot;&amp;gt;\n%s%s\n&amp;lt;/tr&amp;gt;\n\n&amp;#039;, cell1, cell2)&lt;br /&gt;
			end&lt;br /&gt;
		elseif field and param.tag then -- do horizontal bar&lt;br /&gt;
			tag   = mw.language.new(lang):ucfirst(core.langSwitch(labels[param.tag], args.lang))&lt;br /&gt;
			cell1 = mw.ustring.format(&amp;#039;&amp;lt;td class=&amp;quot;type fileinfo-paramfield&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: start; font-size: larger;&amp;quot;&amp;gt;&amp;amp;nbsp;%s&amp;lt;/td&amp;gt;\n&amp;#039;, tag)&lt;br /&gt;
			field = mw.ustring.format(&amp;#039;&amp;lt;tr style=&amp;quot;vertical-align: top&amp;quot;&amp;gt;\n%s\n&amp;lt;/tr&amp;gt;\n\n&amp;#039;, cell1)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(results, field)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- add table and outer layers&lt;br /&gt;
	local style = string.format(&amp;#039;class=&amp;quot;fileinfotpl-type-artwork toccolours vevent mw-content-%s&amp;quot; dir=&amp;quot;%s&amp;quot; style=&amp;quot;width: 100%%&amp;quot; cellpadding=&amp;quot;4&amp;quot;&amp;#039;, dir, dir)&lt;br /&gt;
	results = string.format(&amp;#039;&amp;lt;table %s&amp;gt;\n%s\n&amp;lt;/table&amp;gt;\n&amp;#039;, style, table.concat(results)) -- combine &amp;quot;results&amp;quot;, an array of strings into a single string&lt;br /&gt;
	results = string.format(&amp;#039;&amp;lt;div class=&amp;quot;hproduct commons-file-information-table&amp;quot;&amp;gt;\n%s\n&amp;lt;/div&amp;gt;\n&amp;#039;, results)&lt;br /&gt;
	return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- =================================================================&lt;br /&gt;
-- === Construct output fields from the input arguments &lt;br /&gt;
-- =================================================================&lt;br /&gt;
&lt;br /&gt;
local function create_infobox(args)&lt;br /&gt;
&lt;br /&gt;
    local cats = &amp;#039;&amp;#039;&lt;br /&gt;
    local frame = mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
        if args.demo then&lt;br /&gt;
                args.scale = &amp;#039;100000&amp;#039;&lt;br /&gt;
                args.heading = &amp;#039;N&amp;#039;&lt;br /&gt;
                args.latitude = &amp;#039;0.0/0.0/0.0/0.0&amp;#039;&lt;br /&gt;
                args.longitude = &amp;#039;0.0/0.0/0.0/0.0&amp;#039;&lt;br /&gt;
&lt;br /&gt;
                 &lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- add formatting to the scale in accordance with current language preference&lt;br /&gt;
	if args.scale and tonumber(args.scale) then&lt;br /&gt;
		args.scale = string.format(&amp;#039;1:%s&amp;#039;, formatnum.formatNum(args.scale, args.lang))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- compass image for heading&lt;br /&gt;
	if args.heading then                   -- note : no input validation currently done&lt;br /&gt;
		local img_link = frame:expandTemplate{ title = &amp;#039;Compass rose file&amp;#039;, args = { args.heading, style = &amp;#039;north&amp;#039; } }&lt;br /&gt;
		args.heading = string.format(&amp;#039;[[%s|50px]]&amp;#039;, img_link)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- bounding box&lt;br /&gt;
	if args.latitude and args.longitude then&lt;br /&gt;
		args.bbox = frame:expandTemplate{ title = &amp;#039;Map/bbox&amp;#039;, args = { latitude = args.latitude, longitude = args.longitude } }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- button with link for Map Warper or external georeferencing&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	local page_id_for_warper = &amp;#039;&amp;#039;&lt;br /&gt;
	if 6 == title.namespace then &lt;br /&gt;
		page_id_for_warper = title.id         -- set pageID ready for warper link, but only if we are in the File: namespace&lt;br /&gt;
	end&lt;br /&gt;
	if (&amp;#039;warped&amp;#039; == args.warp_status) or (&amp;#039;1&amp;#039; == args.warp_status) then&lt;br /&gt;
		local warp_msg = mw.language.new(args.lang):ucfirst(core.langSwitch(labels[&amp;#039;view_warp&amp;#039;], args.lang))  -- msg from I18n/map&lt;br /&gt;
	        args.warp = frame:expandTemplate{ &lt;br /&gt;
			title = &amp;#039;Clickable button&amp;#039;, &lt;br /&gt;
			args = {&lt;br /&gt;
				target=&amp;#039;//warper.wmflabs.org/wikimaps/new?pageid=&amp;#039; .. page_id_for_warper,&lt;br /&gt;
				text= warp_msg,&lt;br /&gt;
				external=&amp;#039;yes&amp;#039;, &lt;br /&gt;
				class=&amp;#039;mw-ui-progressive mw-ui-button ui-button-blue&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
                cats = cats .. &amp;#039;\n[[Category:Georeferenced maps in Wikimaps Warper]]&amp;#039;&lt;br /&gt;
              &lt;br /&gt;
	elseif &amp;#039;external&amp;#039; == args.warp_status then&lt;br /&gt;
		local warp_msg = mw.language.new(args.lang):ucfirst(core.langSwitch(labels[&amp;#039;external_warp&amp;#039;], args.lang))  -- msg from I18n/map&lt;br /&gt;
	    args.warp = frame:expandTemplate{ &lt;br /&gt;
			title = &amp;#039;Clickable button 2&amp;#039;, &lt;br /&gt;
			args = {&lt;br /&gt;
				link=args.warp_url,&lt;br /&gt;
				text= warp_msg,&lt;br /&gt;
				color=&amp;#039;blue2&amp;#039;, &lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	elseif &amp;#039;skip&amp;#039; == args.warp_status then&lt;br /&gt;
	    -- nothing&lt;br /&gt;
	else&lt;br /&gt;
		local warp_msg = mw.language.new(args.lang):ucfirst(core.langSwitch(labels[&amp;#039;help_warp&amp;#039;], args.lang))   -- msg from I18n/map&lt;br /&gt;
	    args.warp = frame:expandTemplate{ &lt;br /&gt;
			title = &amp;#039;Clickable button&amp;#039;, &lt;br /&gt;
			args = {&lt;br /&gt;
				target=&amp;#039;//warper.wmflabs.org/wikimaps/new?pageid=&amp;#039; .. page_id_for_warper,&lt;br /&gt;
				text= warp_msg,&lt;br /&gt;
				external=&amp;#039;yes&amp;#039;, &lt;br /&gt;
				class=&amp;#039;mw-ui-progressive mw-ui-button ui-button-blue&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	    if not (&amp;#039;unwarped&amp;#039; == args.warp_status) then&lt;br /&gt;
			args.warp = mw.ustring.format(&amp;#039;%s &amp;lt;small&amp;gt;%s&amp;lt;/small&amp;gt;&amp;#039;, args.warp, mw.language.new(args.lang):ucfirst(core.langSwitch(labels[&amp;#039;skip_warp&amp;#039;], args.lang))) &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- try to internationalise language code&lt;br /&gt;
	if args.language then&lt;br /&gt;
	    local language_i18n = mw.language.fetchLanguageName( args.language, args.lang )&lt;br /&gt;
		if not (&amp;#039;&amp;#039; == language_i18n) then &lt;br /&gt;
			args.language = language_i18n&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- internationalise ISO dates&lt;br /&gt;
	if args.date then&lt;br /&gt;
		-- apply ISODate to function to date string to convert date in ISO format to translated date string&lt;br /&gt;
		args.date = ISOdate(args.date, args.lang, &amp;#039;&amp;#039;, &amp;#039;dtstart&amp;#039;, &amp;#039;100-999&amp;#039;)      &lt;br /&gt;
	end &lt;br /&gt;
&lt;br /&gt;
	if args.map_date then&lt;br /&gt;
		-- apply ISODate to function to date string to convert date in ISO format to translated date string&lt;br /&gt;
		args.map_date = ISOdate(args.map_date, args.lang, &amp;#039;&amp;#039;, &amp;#039;dtstart&amp;#039;, &amp;#039;100-999&amp;#039;)      &lt;br /&gt;
	end &lt;br /&gt;
&lt;br /&gt;
	if args.print_date then&lt;br /&gt;
		-- apply ISODate to function to date string to convert date in ISO format to translated date string&lt;br /&gt;
		args.print_date = ISOdate(args.print_date, args.lang, &amp;#039;&amp;#039;, &amp;#039;dtstart&amp;#039;, &amp;#039;100-999&amp;#039;)      &lt;br /&gt;
	end &lt;br /&gt;
&lt;br /&gt;
    if args.wikidata_title then&lt;br /&gt;
		args.title = string.format(&amp;#039;%s [[File:Wikidata-logo.svg|20px|wikidata:%s|link=wikidata:%s]]&amp;#039;, args.title or &amp;#039;&amp;#039;, args.wikidata_title, args.wikidata_title)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
        local results = build_html(args)&lt;br /&gt;
	return results .. cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ==================================================&lt;br /&gt;
-- === External functions ===========================&lt;br /&gt;
-- ==================================================&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- === Version of the function to be called from other LUA codes&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- _map function creates a wikicode for {{Map}} template based on&lt;br /&gt;
-- passed arguments (through &amp;quot;args&amp;quot;) and data extracted from SDC. &lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: p._SDC_Description, p._SDC_Source, p._SDC_Author, p._SDC_Date, &lt;br /&gt;
--    Build_html, Module:ISOdate (_date)&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function p._map(args)&lt;br /&gt;
	local cats = &amp;#039;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	-- ============================================================================================&lt;br /&gt;
	-- === add [[Category:Pages using Map template with incorrect parameter]] if needed ===&lt;br /&gt;
	-- ============================================================================================&lt;br /&gt;
	local page = mw.title.getCurrentTitle()&lt;br /&gt;
	local lang = args.lang&lt;br /&gt;
	local namespace = page.namespace   -- get page namespace&lt;br /&gt;
	if namespace==6 or namespace==10 then&lt;br /&gt;
		-- TODO add all allowed fields&lt;br /&gt;
		local allowedFields = {&amp;#039;title&amp;#039;, &amp;#039;wikidata_title&amp;#039;, &amp;#039;description&amp;#039;, &amp;#039;legend&amp;#039;, &amp;#039;adjacent_sheets&amp;#039;, &amp;#039;sheet_index&amp;#039;, &amp;#039;author&amp;#039;, &amp;#039;contributor&amp;#039;, &amp;#039;image&amp;#039;, &amp;#039;date&amp;#039;, &amp;#039;source&amp;#039;, &amp;#039;permission&amp;#039;, &amp;#039;map_date&amp;#039;, &amp;#039;location&amp;#039;, &amp;#039;wikidata_location&amp;#039;, &amp;#039;type&amp;#039;, &amp;#039;projection&amp;#039;, &amp;#039;centroid&amp;#039;, &amp;#039;scale&amp;#039;, &amp;#039;zoom&amp;#039;, &amp;#039;heading&amp;#039;, &amp;#039;latitude&amp;#039;, &amp;#039;longitude&amp;#039;, &amp;#039;warp_status&amp;#039;, &amp;#039;warp_url&amp;#039;, &amp;#039;set&amp;#039;, &amp;#039;wikidata_set&amp;#039;, &amp;#039;sheet&amp;#039;, &amp;#039;book_author&amp;#039;, &amp;#039;wd_book_author&amp;#039;, &amp;#039;book_title&amp;#039;, &amp;#039;wikidata_book&amp;#039;, &amp;#039;volume&amp;#039;, &amp;#039;page&amp;#039;, &amp;#039;language&amp;#039;, &amp;#039;publication_place&amp;#039;, &amp;#039;publisher&amp;#039;, &amp;#039;printer&amp;#039;, &amp;#039;print_date&amp;#039;, &amp;#039;ISBN&amp;#039;, &amp;#039;LCCN&amp;#039;, &amp;#039;OCLC&amp;#039;, &amp;#039;institution&amp;#039;, &amp;#039;id&amp;#039;, &amp;#039;dimensions&amp;#039;, &amp;#039;scan_resolution&amp;#039;, &amp;#039;medium&amp;#039;, &amp;#039;credit_line&amp;#039;, &amp;#039;inscriptions&amp;#039;, &amp;#039;notes&amp;#039;, &amp;#039;other_versions&amp;#039;, &amp;#039;references&amp;#039;, &amp;#039;other_fields&amp;#039;, &amp;#039;other_fields_1&amp;#039;, &amp;#039;other_fields_2&amp;#039;, &amp;#039;other_fields_3&amp;#039;, &amp;#039;other_fields_4&amp;#039;, &amp;#039;other_fields_5&amp;#039;, &amp;#039;demo&amp;#039;, &amp;#039;lang&amp;#039;, &amp;#039;resolution&amp;#039;, &amp;#039;other-versions&amp;#039;, &amp;#039;subtitle&amp;#039;, &amp;#039;strict&amp;#039; }&lt;br /&gt;
		local set, badField = {}, {}&lt;br /&gt;
		for _, field in ipairs(allowedFields) do set[field] = true end&lt;br /&gt;
		for field, _ in pairs( args ) do &lt;br /&gt;
			if not set[field] then&lt;br /&gt;
				table.insert(badField, field)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if #badField&amp;gt;0 then&lt;br /&gt;
			cats = mw.ustring.format(&amp;#039;\n;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Error in [[Template:Map|{{Map}}&amp;#039;..&lt;br /&gt;
				&amp;#039; template]]: unknown parameter &amp;quot;%s&amp;quot;.&amp;lt;/span&amp;gt;&amp;#039;,  table.concat(badField,&amp;#039;&amp;quot;, &amp;quot;&amp;#039;))&lt;br /&gt;
			cats = cats .. &amp;#039;\n[[Category:Pages using Map template with incorrect parameter]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.pagename = page.text&lt;br /&gt;
&lt;br /&gt;
	return create_infobox(args) .. cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- === Version of the functions to be called from template namespace&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- information function creates a wikicode for {{Map}} template based on&lt;br /&gt;
-- passed arguments (through &amp;quot;frame&amp;quot;) and data extracted from SDC. All inputs do not &lt;br /&gt;
-- depend on capitalization and all &amp;quot;_&amp;quot; can be replaced with spaces.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Dependencies: p._information&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
function p.map(frame)&lt;br /&gt;
	local args = core.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	-- map aliases to a single variable (all parameters converted to lowercase with _ instead of spaces&lt;br /&gt;
	&lt;br /&gt;
	args.id = args.id or args.accession_number&lt;br /&gt;
	args.medium = args.medium or args.technique&lt;br /&gt;
	args.dimensions = args.dimensions or args.size&lt;br /&gt;
	args.permission = args.permission or args.license&lt;br /&gt;
	args.location = args.depicted_place or args.location&lt;br /&gt;
	args.resolution = args.scan or args.scan_resolution or args.resolution&lt;br /&gt;
        args.warp_status = args.warp_status or args.warper or args.warped&lt;br /&gt;
	if args.imgen then&lt;br /&gt;
		if not args.image then&lt;br /&gt;
			args.image = args.imgen &lt;br /&gt;
			args.imgen = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if  args.image and string.sub(args.image, 1, 1 ) ~= &amp;#039;{&amp;#039; then&lt;br /&gt;
		args.image = frame:expandTemplate{ title = &amp;#039;Igen/map&amp;#039;, args = { args.image } }&lt;br /&gt;
	end	&lt;br /&gt;
&lt;br /&gt;
	-- remove aliases&lt;br /&gt;
	args.accession_number = nil&lt;br /&gt;
	args.technique = nil&lt;br /&gt;
	args.size = nil&lt;br /&gt;
	args.license = nil&lt;br /&gt;
	args.help_warp = nil&lt;br /&gt;
	args.depicted_place = nil&lt;br /&gt;
	args.scan_resolution,   args.scan = nil, nil&lt;br /&gt;
        args.warper, args.warped = nil, nil&lt;br /&gt;
&lt;br /&gt;
        -- ensure the right format&lt;br /&gt;
        args.strict       = core.yesno(args.strict, true)&lt;br /&gt;
&lt;br /&gt;
	return p._map(args)	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- List of exported functions&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- map&lt;br /&gt;
 &lt;br /&gt;
 --[[&lt;br /&gt;
 Calculate coordinates of 4 corners of the map based on 3 georeferenced anchor&lt;br /&gt;
 points and image dimensions.&lt;br /&gt;
 INPUTS:&lt;br /&gt;
 * anchorX - x map coordinate (pixel column) of 3 anchor points on the map&lt;br /&gt;
 * anchorY - y map coordinate (pixel  row  ) of 3 anchor points on the map&lt;br /&gt;
 * anchorDeg - latitude or longitude of 3 anchor points on the map&lt;br /&gt;
 * nx - image width  in pixels&lt;br /&gt;
 * ny - image height in pixels&lt;br /&gt;
 &lt;br /&gt;
 	X   = {7772, 330, 6679}         -- x map coordinate of 4 cities on the map&lt;br /&gt;
    Y   = {553, 4122, 5248}         -- y map coordinate of 4 cities on the map&lt;br /&gt;
    lat = {52.516, 48.857, 48.133} -- latitude of 4 cities on the map&lt;br /&gt;
    lon = {13.383, 2.351, 11.567}   -- longitude of 4 cities on the map&lt;br /&gt;
    nx   = 8150                            -- image width&lt;br /&gt;
    ny   = 6978                            --image height&lt;br /&gt;
 ]]&lt;br /&gt;
function p.CalculateCornerLocations(frame)&lt;br /&gt;
	-- process inputs&lt;br /&gt;
	local anchorX   = mw.text.split(frame.args.anchorX, &amp;#039;/&amp;#039;)&lt;br /&gt;
	local anchorY   = mw.text.split(frame.args.anchorY, &amp;#039;/&amp;#039;)&lt;br /&gt;
	local anchorDeg = mw.text.split(frame.args.anchorDeg, &amp;#039;/&amp;#039;)&lt;br /&gt;
	local nx        = tonumber(frame.args.nx)&lt;br /&gt;
	local ny        = tonumber(frame.args.ny)&lt;br /&gt;
	local formatstr = tonumber(frame.args.formatstr) or &amp;#039;%8.6f&amp;#039;&lt;br /&gt;
	if (#anchorX~=3 or #anchorY~=3 or #anchorDeg~=3) then&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- do matrix algebra&lt;br /&gt;
	local matrix = require(&amp;#039;Module:Matrix&amp;#039;)&lt;br /&gt;
	-- Calculate transformation matrix&lt;br /&gt;
	-- MATLAB: M = [X, Y, ones(length(X),1)] \ anchorDeg; &lt;br /&gt;
	C  = matrix{{ anchorX[1], anchorY[1], 1, anchorDeg[1]},&lt;br /&gt;
    	        { anchorX[2], anchorY[2], 1, anchorDeg[2]},&lt;br /&gt;
    	        { anchorX[3], anchorY[3], 1, anchorDeg[3]}}&lt;br /&gt;
	local done = matrix.dogauss( C )&lt;br /&gt;
	if done then&lt;br /&gt;
		M = matrix.subm( C, 1,4,3,4) -- remove identity matrix from first 3 columns&lt;br /&gt;
		-- MATLAB: cornerDeg = [ 1, ny, 1; nx, ny, 1; nx, 1, 1; 1, 1, 1] * M&lt;br /&gt;
		cornerPix = matrix{{ 1, ny, 1},{nx, ny, 1},{nx, 1, 1},{1, 1, 1}} -- corner points in pixels&lt;br /&gt;
		cornerDeg = cornerPix * M&lt;br /&gt;
		-- convert to a string&lt;br /&gt;
		local tstr = {}&lt;br /&gt;
		for i = 1,#cornerDeg do&lt;br /&gt;
			tstr[i] = string.format(formatstr, cornerDeg[i][1])&lt;br /&gt;
		end&lt;br /&gt;
		str =table.concat(tstr,&amp;#039;/&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		str = &amp;#039;0/0/0/0&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
    return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Colani</name></author>
	</entry>
</feed>