Module:Infobox body of water tracking: Difference between revisions
Appearance
Content deleted Content added
not what this tracks |
No edit summary |
||
Line 21: | Line 21: | ||
local args = frame:getParent().args |
local args = frame:getParent().args |
||
local AZ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
local AZ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
||
local warnmsg = {} |
|||
if (isblank(args['image']) and isblank(args['image_lake']) ) then |
if (isblank(args['image']) and isblank(args['image_lake']) ) then |
||
Line 35: | Line 36: | ||
local duplicate_parameters = 0 |
local duplicate_parameters = 0 |
||
local duplicate_list = { |
|||
{'child', 'embed'}, |
|||
{'name', 'lake_name'}, |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
{'image', 'image_lake'}, |
|||
end |
|||
{'alt', 'alt_lake'}, |
|||
if (args['name'] and args['lake_name']) then |
|||
{'caption', 'caption_lake'}, |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
{'coordinates', 'coords'}, |
|||
end |
|||
{'lake_type', 'type'}, |
|||
if (args['image'] and args['image_lake']) then |
|||
{'ocean_type', 'type'}, |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
{'lake_type', 'ocean_type'}, |
|||
end |
|||
{'part_of', 'parent'}, |
|||
if (args['alt'] and args['alt_lake']) then |
|||
{'basin_countries', 'countries'}, |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
{'catchment_km2', 'catchment'}, |
|||
end |
|||
{'length_km', 'length'}, |
|||
if (args['caption'] and args['caption_lake']) then |
|||
{'width_km', 'width'}, |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
{'area_km2', 'area'}, |
|||
end |
|||
{'depth_m', 'depth'}, |
|||
if (args['coordinates'] and args['coords']) then |
|||
{'max-depth_m', 'max-depth'}, |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
{'volume_km3', 'volume'}, |
|||
end |
|||
{'shore_km', 'shore'}, |
|||
if (args['lake_type'] and args['type']) then |
|||
{'elevation_m', 'elevation'}, |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
{'settlements', 'cities'}, |
|||
end |
|||
{'extra', 'nrhp'}, |
|||
if (args['ocean_type'] and args['type']) then |
|||
{'extra', 'embedded'}, |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
{'embedded', 'nrhp'} |
|||
end |
|||
} |
|||
if (args['part_of'] and args['parent']) then |
|||
for i, params in ipairs(duplicate_list) do |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
if args[params[1]] and args[params[2]] then |
|||
end |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
if (args['basin_countries'] and args['countries']) then |
|||
table.insert(warnmsg, 'Cannot use <code>' .. params[1] .. '</code> and <code>' .. params[2] .. '</code> at the same time.') |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
end |
||
if (args['catchment_km2'] and args ['catchment']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['length_km'] and args['length']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['width_km'] and args['width']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['area_km2'] and args['area']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['depth_m'] and args['depth']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['max-depth_m'] and args['max-depth']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['volume_km3'] and args['volume']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['shore_km'] and args['shore']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['elevation_m'] and args['elevation']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['settlements'] and args['cities']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['extra'] and args['nrhp']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
|||
if (args['extra'] and args['embedded']) then |
|||
duplicate_parameters = duplicate_parameters + 1 |
|||
end |
end |
||
if (duplicate_parameters > 0) then |
if (duplicate_parameters > 0) then |
||
Line 109: | Line 75: | ||
local no_convert_parameters = 0 |
local no_convert_parameters = 0 |
||
local dim_list = { |
|||
if hasnoconvert(args['catchment'] or '') then |
|||
'catchment', 'length', 'width', 'area', 'depth', 'max-depth', 'volume', |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
'shore', 'elevation', 'temperature_low', 'temperature_high'} |
|||
end |
|||
for i, param in ipairs(dim_list) do |
|||
if hasnoconvert(args['length'] or '') then |
|||
if hasnoconvert(args[param] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
table.insert(warnmsg, 'Unconverted dimensions in <code>' .. param .. '</code>') |
|||
if hasnoconvert(args['width'] or '') then |
|||
end |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if hasnoconvert(args['area'] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if hasnoconvert(args['depth'] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if hasnoconvert(args['max-depth'] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if hasnoconvert(args['volume'] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if hasnoconvert(args['shore'] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if hasnoconvert(args['elevation'] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if hasnoconvert(args['temperature_low'] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if hasnoconvert(args['temperature_high'] or '') then |
|||
no_convert_parameters = no_convert_parameters + 1 |
|||
end |
|||
if (no_convert_parameters > 0) then |
if (no_convert_parameters > 0) then |
||
cats = cats .. '[[Category:Pages using infobox body of water with non-automatically converted dimension |
cats = cats .. '[[Category:Pages using infobox body of water with a non-automatically converted dimension|' .. |
||
string.sub(AZ,no_convert_parameters, no_convert_parameters+1) .. ']]' |
string.sub(AZ,no_convert_parameters, no_convert_parameters+1) .. ']]' |
||
end |
end |
||
if #warnmsg > 0 then |
|||
if frame:preprocess( "{{REVISIONID}}" ) == "" then |
|||
cats = '<div class="hatnote" style="color:red"><strong>Infobox school warning:</strong> ' .. table.concat(warnmsg, '<br>') .. '</div>' .. cats |
|||
end |
|||
end |
|||
return cats |
return cats |
Revision as of 14:17, 11 October 2018
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
![]() | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
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 (139)
- Category:Articles using infobox body of water without image (7,481)
- Category:Articles using infobox body of water without alt (9,356)
- Category:Articles using infobox body of water without pushpin_map (997)
- Category:Articles using infobox body of water without pushpin_map_alt (10,656)
- Category:Articles using infobox body of water without image_bathymetry (18,101)
- Category:Articles using infobox body of water without alt_bathymetry (488)
- Category:Articles using infobox body of water with mapframe (171)
- Category:Pages using infobox body of water with a non-automatically converted dimension (14)
- Category:Pages using infobox body of water with duplicate parameters (4)
- Category:Pages using infobox body of water with unknown parameters (1)
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 args = frame:getParent().args
local AZ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
local warnmsg = {}
if (isblank(args['image']) and isblank(args['image_lake']) ) then
if mw.title.getCurrentTitle().namespace == 0 then
cats = cats .. '[[Category:Articles using infobox body of water without image]]'
end
end
if isblank(args['coords']) and isblank(args['coordinates']) then
if mw.title.getCurrentTitle().namespace == 0 then
cats = cats .. '[[Category:Articles using infobox body of water without coordinates]]'
end
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'},
{'width_km', 'width'},
{'area_km2', '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
cats = cats .. '[[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
if frame:preprocess( "{{REVISIONID}}" ) == "" then
cats = '<div class="hatnote" style="color:red"><strong>Infobox school warning:</strong> ' .. table.concat(warnmsg, '<br>') .. '</div>' .. cats
end
end
return cats
end
return p