Editing Module:Coordinates
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 3: | Line 3: | ||
templates. It provides several methods, including | templates. It provides several methods, including | ||
− | {{# | + | {{#Invoke:Coordinates | coord }} : General function formatting and displaying |
coordinate values. | coordinate values. | ||
− | {{# | + | {{#Invoke:Coordinates | dec2dms }} : Simple function for converting decimal |
degree values to DMS format. | degree values to DMS format. | ||
− | {{# | + | {{#Invoke:Coordinates | dms2dec }} : Simple function for converting DMS format |
to decimal degree format. | to decimal degree format. | ||
− | {{# | + | {{#Invoke:Coordinates | link }} : Export the link used to reach the tools |
]] | ]] | ||
− | |||
− | |||
local math_mod = require("Module:Math") | local math_mod = require("Module:Math") | ||
Line 23: | Line 21: | ||
local current_page = mw.title.getCurrentTitle() | local current_page = mw.title.getCurrentTitle() | ||
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' ); | local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' ); | ||
− | local coord_link = '// | + | local coord_link = '//tools.wmflabs.org/geohack/geohack.php?pagename=' .. page_name .. '¶ms=' |
− | |||
--[[ Helper function, replacement for {{coord/display/title}} ]] | --[[ Helper function, replacement for {{coord/display/title}} ]] | ||
Line 35: | Line 32: | ||
--[[ Helper function, Replacement for {{coord/display/inline}} ]] | --[[ Helper function, Replacement for {{coord/display/inline}} ]] | ||
local function displayinline(s, notes) | local function displayinline(s, notes) | ||
− | return s .. notes | + | return s .. notes |
end | end | ||
Line 54: | Line 51: | ||
wrappers = 'Template:Coord' | wrappers = 'Template:Coord' | ||
}) | }) | ||
− | return coordinates[funcName](args | + | return coordinates[funcName](args) |
end | end | ||
end | end | ||
Line 80: | Line 77: | ||
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself | Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself | ||
default is the mode as specificied by the user when calling the {{coord}} template | default is the mode as specificied by the user when calling the {{coord}} template | ||
− | mode is the display mode (dec or dms) that we will need to determine the css class for | + | mode is the display mode (dec or dms) that we will need to determine the css class for |
]] | ]] | ||
local function displayDefault(default, mode) | local function displayDefault(default, mode) | ||
Line 86: | Line 83: | ||
default = "dec" | default = "dec" | ||
end | end | ||
− | + | ||
if default == mode then | if default == mode then | ||
return "geo-default" | return "geo-default" | ||
Line 109: | Line 106: | ||
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"]) | uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"]) | ||
end | end | ||
− | + | ||
local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">' | local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">' | ||
− | + | .. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> ' | |
− | + | .. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>' | |
− | + | .. '</span>' | |
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0 | local lat = tonumber( coordinateSpec["dec-lat"] ) or 0 | ||
Line 128: | Line 125: | ||
if long < 0 then | if long < 0 then | ||
-- FIXME does not handle unicode minus | -- FIXME does not handle unicode minus | ||
− | geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W" | + | geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W" |
else | else | ||
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E" | geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E" | ||
end | end | ||
− | + | ||
local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">' | local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">' | ||
− | + | .. geodeclat .. ' ' | |
− | + | .. geodeclong | |
− | + | .. '</span>' | |
local geonumhtml = '<span class="geo">' | local geonumhtml = '<span class="geo">' | ||
− | + | .. coordinateSpec["dec-lat"] .. '; ' | |
− | + | .. coordinateSpec["dec-long"] | |
− | + | .. '</span>' | |
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>' | local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>' | ||
Line 148: | Line 145: | ||
if not args["name"] then | if not args["name"] then | ||
− | inner = inner .. geodechtml | + | inner = inner .. geodechtml |
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>' | .. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>' | ||
else | else | ||
− | inner = inner .. '<span class="vcard">' .. geodechtml | + | inner = inner .. '<span class="vcard">' .. geodechtml |
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>' | .. '<span style="display:none"> / ' .. geonumhtml .. '</span>' | ||
.. '<span style="display:none"> (<span class="fn org">' | .. '<span style="display:none"> (<span class="fn org">' | ||
Line 157: | Line 154: | ||
end | end | ||
− | return | + | return '<span class="plainlinks nourlexpansion">' .. |
− | + | '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']' .. '</span>' | |
− | |||
− | |||
end | end | ||
Line 170: | Line 165: | ||
--[[ Helper function, convert decimal to degrees and minutes ]] | --[[ Helper function, convert decimal to degrees and minutes ]] | ||
− | local function convert_dec2dms_dm(coordinate) | + | local function convert_dec2dms_dm(coordinate) |
coordinate = math_mod._round( coordinate * 60, 0 ); | coordinate = math_mod._round( coordinate * 60, 0 ); | ||
local m = coordinate % 60; | local m = coordinate % 60; | ||
coordinate = math.floor( (coordinate - m) / 60 ); | coordinate = math.floor( (coordinate - m) / 60 ); | ||
local d = coordinate % 360 .."°" | local d = coordinate % 360 .."°" | ||
− | + | ||
return d .. string.format( "%02d′", m ) | return d .. string.format( "%02d′", m ) | ||
end | end | ||
Line 191: | Line 186: | ||
end | end | ||
− | --[[ | + | --[[ |
− | Helper function, convert decimal latitude or longitude to | + | Helper function, convert decimal latitude or longitude to |
− | degrees, minutes, and seconds format based on the specified precision. | + | degrees, minutes, and seconds format based on the specified precision. |
]] | ]] | ||
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) | local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision) | ||
Line 221: | Line 216: | ||
local minutes = tonumber(minutes_str) or 0 | local minutes = tonumber(minutes_str) or 0 | ||
local seconds = tonumber(seconds_str) or 0 | local seconds = tonumber(seconds_str) or 0 | ||
− | + | ||
local factor = 1 | local factor = 1 | ||
if direction == "S" or direction == "W" then | if direction == "S" or direction == "W" then | ||
factor = -1 | factor = -1 | ||
end | end | ||
− | + | ||
local precision = 0 | local precision = 0 | ||
if seconds_str then | if seconds_str then | ||
Line 235: | Line 230: | ||
precision = math.max( math_mod._precision(degrees_str), 0 ); | precision = math.max( math_mod._precision(degrees_str), 0 ); | ||
end | end | ||
− | + | ||
− | local decimal = factor * (degrees+(minutes+seconds/60)/60) | + | local decimal = factor * (degrees+(minutes+seconds/60)/60) |
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based. | return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based. | ||
end | end | ||
− | --[[ | + | --[[ |
Checks input values to for out of range errors. | Checks input values to for out of range errors. | ||
]] | ]] | ||
Line 259: | Line 254: | ||
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"}) | table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"}) | ||
end | end | ||
− | --[[ | + | --[[ |
#coordinates is inconsistent about whether this is an error. If globe: is | #coordinates is inconsistent about whether this is an error. If globe: is | ||
specified, it won't error on this condition, but otherwise it will. | specified, it won't error on this condition, but otherwise it will. | ||
− | + | ||
For not simply disable this check. | For not simply disable this check. | ||
− | + | ||
if long_d > 180 then | if long_d > 180 then | ||
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"}) | table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"}) | ||
end | end | ||
]] | ]] | ||
− | end | + | end |
− | + | ||
if lat_d > 90 then | if lat_d > 90 then | ||
table.insert(errors, {source, "latitude degrees > 90"}) | table.insert(errors, {source, "latitude degrees > 90"}) | ||
Line 307: | Line 302: | ||
table.insert(errors, {source, "longitude seconds < 0"}) | table.insert(errors, {source, "longitude seconds < 0"}) | ||
end | end | ||
− | + | ||
return errors; | return errors; | ||
end | end | ||
Line 314: | Line 309: | ||
parseDec | parseDec | ||
− | Transforms decimal format latitude and longitude into the | + | Transforms decimal format latitude and longitude into the a |
structure to be used in displaying coordinates | structure to be used in displaying coordinates | ||
]] | ]] | ||
Line 320: | Line 315: | ||
local coordinateSpec = {} | local coordinateSpec = {} | ||
local errors = {} | local errors = {} | ||
− | + | ||
if not long then | if not long then | ||
return nil, {{"parseDec", "Missing longitude"}} | return nil, {{"parseDec", "Missing longitude"}} | ||
Line 326: | Line 321: | ||
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}} | return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}} | ||
end | end | ||
− | + | ||
− | errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false ); | + | errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false ); |
coordinateSpec["dec-lat"] = lat; | coordinateSpec["dec-lat"] = lat; | ||
coordinateSpec["dec-long"] = long; | coordinateSpec["dec-long"] = long; | ||
Line 333: | Line 328: | ||
local mode = coordinates.determineMode( lat, long ); | local mode = coordinates.determineMode( lat, long ); | ||
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} | coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} | ||
− | coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} | + | coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}} |
− | + | ||
if format then | if format then | ||
coordinateSpec.default = format | coordinateSpec.default = format | ||
Line 347: | Line 342: | ||
parseDMS | parseDMS | ||
− | Transforms degrees, minutes, seconds format latitude and longitude | + | Transforms degrees, minutes, seconds format latitude and longitude |
into the a structure to be used in displaying coordinates | into the a structure to be used in displaying coordinates | ||
]] | ]] | ||
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format ) | local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format ) | ||
− | local coordinateSpec | + | local coordinateSpec = {} |
− | + | local errors = {} | |
+ | |||
lat_f = lat_f:upper(); | lat_f = lat_f:upper(); | ||
long_f = long_f:upper(); | long_f = long_f:upper(); | ||
− | + | ||
-- Check if specified backward | -- Check if specified backward | ||
if lat_f == 'E' or lat_f == 'W' then | if lat_f == 'E' or lat_f == 'W' then | ||
− | lat_d | + | local t_d, t_m, t_s, t_f; |
− | end | + | t_d = lat_d; |
− | + | t_m = lat_m; | |
+ | t_s = lat_s; | ||
+ | t_f = lat_f; | ||
+ | lat_d = long_d; | ||
+ | lat_m = long_m; | ||
+ | lat_s = long_s; | ||
+ | lat_f = long_f; | ||
+ | long_d = t_d; | ||
+ | long_m = t_m; | ||
+ | long_s = t_s; | ||
+ | long_f = t_f; | ||
+ | end | ||
+ | |||
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true ); | errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true ); | ||
if not long_d then | if not long_d then | ||
Line 367: | Line 375: | ||
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }} | return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }} | ||
end | end | ||
− | + | ||
− | if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then | + | if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then |
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then | if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then | ||
− | if lat_f:upper() == 'S' then | + | if lat_f:upper() == 'S' then |
lat_d = '-' .. lat_d; | lat_d = '-' .. lat_d; | ||
end | end | ||
− | if long_f:upper() == 'W' then | + | if long_f:upper() == 'W' then |
long_d = '-' .. long_d; | long_d = '-' .. long_d; | ||
− | end | + | end |
− | + | ||
return parseDec( lat_d, long_d, format ); | return parseDec( lat_d, long_d, format ); | ||
− | end | + | end |
− | end | + | end |
− | + | ||
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f | coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f | ||
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f | coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f | ||
Line 390: | Line 398: | ||
else | else | ||
coordinateSpec.default = "dms" | coordinateSpec.default = "dms" | ||
− | end | + | end |
− | return coordinateSpec, errors | + | return coordinateSpec, errors |
end | end | ||
− | --[[ | + | --[[ |
Check the input arguments for coord to determine the kind of data being provided | Check the input arguments for coord to determine the kind of data being provided | ||
and then make the necessary processing. | and then make the necessary processing. | ||
Line 401: | Line 409: | ||
local function formatTest(args) | local function formatTest(args) | ||
local result, errors | local result, errors | ||
− | local | + | local primary = false |
local function getParam(args, lim) | local function getParam(args, lim) | ||
Line 410: | Line 418: | ||
return table.concat(ret, '_') | return table.concat(ret, '_') | ||
end | end | ||
− | + | ||
if not args[1] then | if not args[1] then | ||
-- no lat logic | -- no lat logic | ||
Line 422: | Line 430: | ||
if not result then | if not result then | ||
return errorPrinter(errors); | return errorPrinter(errors); | ||
− | end | + | end |
− | + | result.param = table.concat({args[1], 'N', args[2] or '', 'E', args[3] or ''}, '_') | |
− | |||
− | |||
− | result.param = table.concat({ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
elseif dmsTest(args[4], args[8]) then | elseif dmsTest(args[4], args[8]) then | ||
-- dms logic | -- dms logic | ||
− | result, errors | + | result, errors = parseDMS(args[1], args[2], args[3], args[4], |
args[5], args[6], args[7], args[8], args.format) | args[5], args[6], args[7], args[8], args.format) | ||
if args[10] then | if args[10] then | ||
Line 445: | Line 445: | ||
elseif dmsTest(args[3], args[6]) then | elseif dmsTest(args[3], args[6]) then | ||
-- dm logic | -- dm logic | ||
− | result, errors | + | result, errors = parseDMS(args[1], args[2], nil, args[3], |
args[4], args[5], nil, args[6], args['format']) | args[4], args[5], nil, args[6], args['format']) | ||
if args[8] then | if args[8] then | ||
Line 456: | Line 456: | ||
elseif dmsTest(args[2], args[4]) then | elseif dmsTest(args[2], args[4]) then | ||
-- d logic | -- d logic | ||
− | result, errors | + | result, errors = parseDMS(args[1], nil, nil, args[2], |
args[3], nil, nil, args[4], args.format) | args[3], nil, nil, args[4], args.format) | ||
if args[6] then | if args[6] then | ||
table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) | table.insert(errors, {'formatTest', 'Extra unexpected parameters'}) | ||
− | end | + | end |
if not result then | if not result then | ||
return errorPrinter(errors) | return errorPrinter(errors) | ||
Line 470: | Line 470: | ||
end | end | ||
result.name = args.name | result.name = args.name | ||
− | + | ||
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'} | local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'} | ||
for _, v in ipairs(extra_param) do | for _, v in ipairs(extra_param) do | ||
− | if args[v] then | + | if args[v] then |
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' }) | table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' }) | ||
end | end | ||
end | end | ||
− | + | ||
local ret = specPrinter(args, result) | local ret = specPrinter(args, result) | ||
if #errors > 0 then | if #errors > 0 then | ||
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]' | ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]' | ||
end | end | ||
− | return ret | + | return ret |
end | end | ||
Line 488: | Line 488: | ||
Generate Wikidata tracking categories. | Generate Wikidata tracking categories. | ||
]] | ]] | ||
− | local function makeWikidataCategories( | + | local function makeWikidataCategories() |
local ret | local ret | ||
if mw.wikibase and current_page.namespace == 0 then | if mw.wikibase and current_page.namespace == 0 then | ||
− | local entity = | + | local entity = mw.wikibase.getEntityObject() |
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1] then | if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1] then | ||
local snaktype = entity.claims.P625[1].mainsnak.snaktype | local snaktype = entity.claims.P625[1].mainsnak.snaktype | ||
Line 520: | Line 520: | ||
Usage: | Usage: | ||
− | {{ | + | {{ Invoke:Coordinates | link }} |
− | + | ||
]] | ]] | ||
function coordinates.link(frame) | function coordinates.link(frame) | ||
Line 533: | Line 533: | ||
Usage: | Usage: | ||
− | {{ | + | {{ Invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix | |
negative_suffix | precision }} | negative_suffix | precision }} | ||
− | + | ||
decimal_coordinate is converted to DMS format. If positive, the positive_suffix | decimal_coordinate is converted to DMS format. If positive, the positive_suffix | ||
is appended (typical N or E), if negative, the negative suffix is appended. The | is appended (typical N or E), if negative, the negative suffix is appended. The | ||
Line 564: | Line 564: | ||
return 'dms'; | return 'dms'; | ||
end | end | ||
− | end | + | end |
--[[ | --[[ | ||
Line 572: | Line 572: | ||
Usage: | Usage: | ||
− | {{ | + | {{ Invoke:Coordinates | dms2dec | direction_flag | degrees | |
minutes | seconds }} | minutes | seconds }} | ||
− | + | ||
Converts DMS values specified as degrees, minutes, seconds too decimal format. | Converts DMS values specified as degrees, minutes, seconds too decimal format. | ||
− | direction_flag is one of N, S, E, W, and determines whether the output is | + | direction_flag is one of N, S, E, W, and determines whether the output is |
positive (i.e. N and E) or negative (i.e. S and W). | positive (i.e. N and E) or negative (i.e. S and W). | ||
]] | ]] | ||
Line 595: | Line 595: | ||
Usage: | Usage: | ||
− | {{ | + | {{ Invoke:Coordinates | coord }} |
− | {{ | + | {{ Invoke:Coordinates | coord | lat | long }} |
− | {{ | + | {{ Invoke:Coordinates | coord | lat | lat_flag | long | long_flag }} |
... | ... | ||
− | + | ||
− | Refer to {{coord}} documentation page for many additional parameters and | + | Refer to {{coord}} documentation page for many additional parameters and |
configuration options. | configuration options. | ||
− | + | ||
Note: This function provides the visual display elements of {{coord}}. In | Note: This function provides the visual display elements of {{coord}}. In | ||
− | order to load coordinates into the database, the {{#coordinates:}} parser | + | order to load coordinates into the database, the {{#coordinates:}} parser |
function must also be called, this is done automatically in the Lua | function must also be called, this is done automatically in the Lua | ||
version of {{coord}}. | version of {{coord}}. | ||
Line 610: | Line 610: | ||
coordinates.coord = makeInvokeFunc('_coord') | coordinates.coord = makeInvokeFunc('_coord') | ||
function coordinates._coord(args) | function coordinates._coord(args) | ||
− | if not | + | if not args[1] and not args[2] and mw.wikibase.getEntityObject() then |
− | + | local entity = mw.wikibase.getEntityObject() | |
− | local entity = mw.wikibase.getEntityObject( | + | if entity |
− | if entity | ||
and entity.claims | and entity.claims | ||
and entity.claims.P625 | and entity.claims.P625 | ||
Line 619: | Line 618: | ||
then | then | ||
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision | local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision | ||
− | args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude | + | args[1]=entity.claims.P625[1].mainsnak.datavalue.value.latitude |
− | args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude | + | args[2]=entity.claims.P625[1].mainsnak.datavalue.value.longitude |
if precision then | if precision then | ||
− | precision = -math_mod._round(math.log(precision)/math.log(10),0) | + | precision=-math_mod._round(math.log(precision)/math.log(10),0) |
− | args[1] = math_mod._round(args[1],precision) | + | args[1]=math_mod._round(args[1],precision) |
− | args[2] = math_mod._round(args[2],precision) | + | args[2]=math_mod._round(args[2],precision) |
end | end | ||
end | end | ||
end | end | ||
− | + | ||
− | local contents | + | local contents = formatTest(args) |
local Notes = args.notes or '' | local Notes = args.notes or '' | ||
local Display = args.display and args.display:lower() or 'inline' | local Display = args.display and args.display:lower() or 'inline' | ||
Line 641: | Line 640: | ||
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti' | return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti' | ||
end | end | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
local text = '' | local text = '' | ||
if isInline(Display) then | if isInline(Display) then | ||
Line 654: | Line 648: | ||
text = text | text = text | ||
.. displaytitle(contents, Notes) | .. displaytitle(contents, Notes) | ||
− | .. makeWikidataCategories( | + | .. makeWikidataCategories() |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
return text | return text | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
return coordinates | return coordinates |