در حال ویرایش پودمان:Location map
این ویرایش را میتوان خنثی کرد. لطفاً تفاوت زیر را بررسی کنید تا تأیید کنید که این چیزی است که میخواهید انجام دهید، سپس تغییرات زیر را ذخیره کنید تا خنثیسازی ویرایش را به پایان ببرید.
نسخهٔ فعلی | متن شما | ||
خط ۴: | خط ۴: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local converter = require("Module:Numeral converter") | |||
local function round(n, decimals) | local function round(n, decimals) | ||
local pow = 10^(decimals or 0) | local pow = 10^(decimals or 0) | ||
خط ۲۸: | خط ۲۸: | ||
else | else | ||
return mapData[name] | return mapData[name] | ||
end | |||
end | |||
elseif mw.title.new('Template:Location map ' .. map).exists then | |||
local cache = {} | |||
if type(frame) ~= 'table' or type(frame.expandTemplate) ~= 'function' then | |||
error('A frame must be provided when using a legacy location map') | |||
end | |||
return function(name, params) | |||
if params then | |||
return frame:expandTemplate{title = 'Location map ' .. map, args = { name, unpack(params) }} | |||
else | |||
if name == nil then | |||
return 'Template:Location map ' .. map | |||
elseif cache[name] == nil then | |||
cache[name] = frame:expandTemplate{title = 'Location map ' .. map, args = { name }} | |||
end | |||
return cache[name] | |||
end | end | ||
end | end | ||
else | else | ||
error('Unable to find the specified location map definition | error('Unable to find the specified location map definition. Neither "Module:Location map/data/' .. map .. '" nor "Template:Location map ' .. map .. '" exists', 2) | ||
end | end | ||
end | end | ||
خط ۱۰۳: | خط ۱۲۰: | ||
-- Finds a parameter in a transclusion of {{Coord}}. | -- Finds a parameter in a transclusion of {{Coord}}. | ||
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign | local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign | ||
-- خطوط زیر برای پشتیبانی از ارقام فارسی اضافه شدهاست. | |||
coord = coord:gsub('%<span dir%="ltr"%>', "") | |||
coord = coord:gsub('%<%/span%>', "") | |||
coord = converter.convert("en", coord) | |||
--- پایان بومیسازی | |||
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]') | local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]') | ||
if para == 'longitude' then result = {result[3], result[4]} end | if para == 'longitude' then result = {result[3], result[4]} end | ||
خط ۱۹۳: | خط ۲۱۵: | ||
end | end | ||
local image = getContainerImage(args, map) | local image = getContainerImage(args, map) | ||
retval = string.format( | retval = string.format( | ||
'%s[[File:%s|%spx|%s%s]]', | '%s[[File:%s|%spx|%s%s]]', | ||
خط ۱۹۹: | خط ۲۲۰: | ||
image, | image, | ||
width, | width, | ||
args.alt or ((args.label or | args.alt or ((args.label or mw.title.getCurrentTitle().text) .. ' در ' .. map('name') .. ' قرار گرفتهاست'), | ||
args.maplink and ('|link=' .. args.maplink) or '' | args.maplink and ('|link=' .. args.maplink) or '' | ||
) | ) | ||
if args.caption and args.caption ~= '' then | if args.caption and args.caption ~= '' then | ||
if | if mw.ustring.find(args.caption, '##') then | ||
retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]' | retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]' | ||
end | end | ||
خط ۲۲۲: | خط ۲۴۳: | ||
end | end | ||
local retval = '</div>' | local retval = '</div>' | ||
if not args.caption or args.border == 'infobox' then | if not args.caption or args.border == 'infobox' then | ||
if args.border then | if args.border then | ||
خط ۲۳۰: | خط ۲۵۱: | ||
end | end | ||
retval = retval | retval = retval | ||
.. (args.caption or (args.label or | .. (args.caption or (args.label or mw.title.getCurrentTitle().text) .. ' (' .. map('name') .. ')') | ||
.. '</div>' | .. '</div>' | ||
elseif args.caption ~= '' then | elseif args.caption ~= '' then | ||
خط ۲۵۱: | خط ۲۷۲: | ||
end | end | ||
mw.logObject(args, 'args') | mw.logObject(args, 'args') | ||
retval = retval .. '[[رده:نقشههای موقعیت مکانی با خطاهای احتمالی|زیرنویس نامشخص]]' | |||
end | end | ||
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then | if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then | ||
mw.log('Removed parameter used in map definition ' .. map()) | mw.log('Removed parameter used in map definition ' .. map()) | ||
local key = (map('skew') ~= '' and 'skew' or '') .. | |||
(map('lat_skew') ~= '' and 'lat_skew' or '') .. | (map('lat_skew') ~= '' and 'lat_skew' or '') .. | ||
(map('crosses180') ~= '' and 'crosses180' or '') .. | (map('crosses180') ~= '' and 'crosses180' or '') .. | ||
(map('type') ~= '' and 'type' or '') | (map('type') ~= '' and 'type' or '') | ||
retval = retval .. '[[رده:نقشههای موقعیت مکانی با خطاهای احتمالی|' .. key .. ' ]]' | |||
end | end | ||
if string.find(map('name'), '|', 1, true) then | if string.find(map('name'), '|', 1, true) then | ||
mw.log('Pipe used in name of map definition ' .. map()) | mw.log('Pipe used in name of map definition ' .. map()) | ||
retval = retval .. '[[رده:نقشههای موقعیت مکانی با خطاهای احتمالی]]' | |||
end | end | ||
if args.float == 'center' then | if args.float == 'center' then | ||
خط ۲۹۰: | خط ۳۰۵: | ||
if marksize ~= 0 then | if marksize ~= 0 then | ||
builder:wikitext(string.format( | builder:wikitext(string.format( | ||
'[[ | '[[پرونده:%s|%dx%dpx|%s|link=%s%s]]', | ||
mark, | mark, | ||
marksize, | marksize, | ||
خط ۳۷۷: | خط ۳۹۲: | ||
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#' | return table.concat(outputs, '#PlaceList#') .. '#PlaceList#' | ||
end | end | ||
-- خطوط زیر برای پشتیبانی از ارقام فارسی اضافه شدهاست. | |||
for k,v in pairs(args) do | |||
if k ~= "label" and k ~= "mark" and k ~= "link" then | |||
args[k] = converter.convert("en", v) | |||
args[k] = converter.convert_cordination(args[k]) | |||
end | |||
end | |||
-- پایان بومیسازی | |||
local x, y, longitude, latitude | local x, y, longitude, latitude | ||
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude') | longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude') | ||
خط ۳۹۰: | خط ۴۱۳: | ||
end | end | ||
if args.coordinates then | if args.coordinates then | ||
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]] | -- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]] | ||
خط ۴۰۶: | خط ۴۲۷: | ||
local value = entity.claims.P625[1].mainsnak.datavalue.value | local value = entity.claims.P625[1].mainsnak.datavalue.value | ||
longitude, latitude = value.longitude, value.latitude | longitude, latitude = value.longitude, value.latitude | ||
end | end | ||
end | end | ||
خط ۴۱۶: | خط ۴۳۴: | ||
error('No value was provided for latitude') | error('No value was provided for latitude') | ||
end | end | ||
local builder = mw.html.create() | |||
if (not args.lon_deg) ~= (not args.lat_deg) then | |||
builder:wikitext('[[رده:نقشههای موقعیت مکانی با دقت طول و عرض جغرافیایی متفاوت|درجه]]') | |||
elseif (not args.lon_min) ~= (not args.lat_min) then | |||
builder:wikitext('[[رده:نقشههای موقعیت مکانی با دقت طول و عرض جغرافیایی متفاوت|دقیقه]]') | |||
elseif (not args.lon_sec) ~= (not args.lat_sec) then | |||
builder:wikitext('[[رده:نقشههای موقعیت مکانی با دقت طول و عرض جغرافیایی متفاوت|ثانیه]]') | |||
elseif (not args.lon_dir) ~= (not args.lat_dir) then | |||
builder:wikitext('[[رده:نقشههای موقعیت مکانی با دقت طول و عرض جغرافیایی متفاوت|نیمکره]]') | |||
elseif (not args.long) ~= (not args.lat) then | |||
builder:wikitext('[[رده:نقشههای موقعیت مکانی با دقت طول و عرض جغرافیایی متفاوت|اعشاری]]') | |||
end | end | ||
if args.skew or args.lon_shift or args.markhigh then | if args.skew or args.lon_shift or args.markhigh then | ||
خط ۴۳۶: | خط ۴۵۳: | ||
end | end | ||
mw.logObject(args, 'args') | mw.logObject(args, 'args') | ||
local key = (args.skew and 'skew' or '') .. | |||
(args.lon_shift and 'lon_shift' or '') .. | |||
(args.markhigh and 'markhigh' or '') | |||
builder:wikitext('[[رده:نقشههای موقعیت مکانی با خطاهای احتمالی|صفحهای که از پارامتر حذفشده استفاده میکند]]') | |||
end | end | ||
if map('x') ~= '' then | if map('x') ~= '' then | ||
خط ۴۶۰: | خط ۴۷۵: | ||
end | end | ||
mw.logObject(args, 'args') | mw.logObject(args, 'args') | ||
local key = frame:preprocess('{{FULLPAGENAME}}') | |||
builder:wikitext('[[رده:نقشههای موقعیت مکانی با خطاهای احتمالی|' .. key .. ' ]]') | |||
end | end | ||
local mark = args.mark or map('mark') | local mark = args.mark or map('mark') | ||
خط ۴۹۳: | خط ۵۰۶: | ||
args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc}) | args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc}) | ||
end | end | ||
-- خطوط زیر برای پشتیبانی از ارقام فارسی اضافه شدهاست. | |||
for k,v in pairs(args) do | |||
if k ~= "label" and k ~= "mark" and k ~= "link" then | |||
args[k] = converter.convert("en", v) | |||
args[k] = converter.convert_cordination(args[k]) | |||
end | |||
end | |||
-- پایان بومیسازی | |||
if args.useWikidata == nil then | if args.useWikidata == nil then | ||
args.useWikidata = true | args.useWikidata = true |