Module:Infobox body of water tracking
Appearance
| This module is rated as ready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned on help pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed through sandbox testing rather than repeated trial-and-error editing. |
| This module is currently protected from editing. See the protection policy and protection log for more details. Please discuss any changes on the talk page; you may submit an edit request to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected. |
This module is used by Template:Infobox body of water.
Usage
{{#invoke:Infobox body of water tracking|tracking}}
Tracking/maintenance categories
- Category:Wikipedia infobox body of water articles needing maintenance (3)
- Category:Articles using infobox body of water without coordinates (143)
- Category:Articles using infobox body of water without image (7,471)
- Category:Articles using infobox body of water without alt (9,520)
- Category:Articles using infobox body of water without pushpin_map (1,197)
- Category:Articles using infobox body of water without pushpin_map_alt (10,645)
- Category:Articles using infobox body of water without image_bathymetry (18,281)
- Category:Articles using infobox body of water without alt_bathymetry (484)
- Category:Articles using infobox body of water with mapframe (1,899)
- Category:Pages using infobox body of water with a non-automatically converted dimension (1)
- Category:Pages using infobox body of water with duplicate parameters (1)
- Category:Pages using infobox body of water with unknown parameters (0)
local p = {}
function p.tracking(frame)
local function isblank( val )
return (val == nil) or val:match('^[%s]*$')
end
local function hasnoconvert( val )
local res = nil
val = mw.text.killMarkers(val)
if val:match('[0-9]') then
res = 1
if val:match('[%(][−0-9%.]') and val:match('[%)]') then
res = nil
end
end
return res
end
local cats = ''
local maincats = ''
local args = frame:getParent().args
local AZ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
local warnmsg = {}
if isblank(args['image']) then
maincats = maincats .. '[[Category:Articles using infobox body of water without image]]'
elseif isblank(args['alt']) then
maincats = maincats .. '[[Category:Articles using infobox body of water without alt]]'
end
if isblank(args['coords']) and isblank(args['coordinates']) then
maincats = maincats .. '[[Category:Articles using infobox body of water without coordinates]]'
end
if (isblank(args['pushpin_map']) ) then
maincats = maincats .. '[[Category:Articles using infobox body of water without pushpin_map]]'
elseif isblank(args['pushpin_map_alt']) then
maincats = maincats .. '[[Category:Articles using infobox body of water without pushpin_map_alt]]'
end
if (isblank(args['image_bathymetry']) ) then
maincats = maincats .. '[[Category:Articles using infobox body of water without image_bathymetry]]'
elseif isblank(args['alt_bathymetry']) then
maincats = maincats .. '[[Category:Articles using infobox body of water without alt_bathymetry]]'
end
if args['mapframe'] and mw.text.trim(args['mapframe']) == 'yes' then
maincats = maincats .. '[[Category:Articles using infobox body of water with mapframe]]'
end
local duplicate_parameters = 0
local duplicate_list = {
{'child', 'embed'},
{'name', 'lake_name'},
{'image', 'image_lake'},
{'alt', 'alt_lake'},
{'caption', 'caption_lake'},
{'coordinates', 'coords'},
{'lake_type', 'type'},
{'ocean_type', 'type'},
{'lake_type', 'ocean_type'},
{'part_of', 'parent'},
{'basin_countries', 'countries'},
{'catchment_km2', 'catchment'},
{'length_km', 'length'},
{'length_mi', 'length'},
{'width_km', 'width'},
{'width_mi', 'width'},
{'area_km2', 'area'},
{'area_mi2', 'area'},
{'depth_m', 'depth'},
{'max-depth_m', 'max-depth'},
{'volume_km3', 'volume'},
{'shore_km', 'shore'},
{'elevation_m', 'elevation'},
{'settlements', 'cities'},
{'extra', 'nrhp'},
{'extra', 'embedded'},
{'embedded', 'nrhp'}
}
for i, params in ipairs(duplicate_list) do
if args[params[1]] and args[params[2]] then
duplicate_parameters = duplicate_parameters + 1
table.insert(warnmsg, 'Cannot use <code>' .. params[1] .. '</code> and <code>' .. params[2] .. '</code> at the same time.')
end
end
if (duplicate_parameters > 0) then
cats = cats .. '[[Category:Pages using infobox body of water with ' ..
'duplicate parameters|' ..
string.sub(AZ, duplicate_parameters, duplicate_parameters+1) .. ']]'
end
local no_convert_parameters = 0
local dim_list = {
'catchment', 'length', 'width', 'area', 'depth', 'max-depth', 'volume',
'shore', 'elevation', 'temperature_low', 'temperature_high'}
for i, param in ipairs(dim_list) do
if hasnoconvert(args[param] or '') then
no_convert_parameters = no_convert_parameters + 1
table.insert(warnmsg, 'Unconverted dimensions in <code>' .. param .. '</code>')
end
end
if (no_convert_parameters > 0) then
maincats = maincats .. '[[Category:Pages using infobox body of water with a non-automatically converted dimension|' ..
string.sub(AZ,no_convert_parameters, no_convert_parameters+1) .. ']]'
end
if #warnmsg > 0 then
cats = require('Module:If preview')._warning({
table.concat(warnmsg, '<br>') .. '<br>(Infobox body of water).'
}) .. cats
end
if maincats ~= '' and mw.title.getCurrentTitle().namespace == 0 then
cats = cats .. maincats
end
return cats
end
return p