Module:Infobox body of water tracking

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' if (isblank(args['image']) and isblank(args['image_lake']) ) then cats = cats .. ''   end if isblank(args['coords']) and isblank(args['coordinates']) then cats = cats .. ''   end local duplicate_parameters = 0 local unknown_parameters = 0

if (args['child'] and args['embed']) then duplicate_parameters = duplicate_parameters + 1 end if (args['name'] and args['lake_name']) then duplicate_parameters = duplicate_parameters + 1 end if (args['image'] and args['image_lake']) then duplicate_parameters = duplicate_parameters + 1 end if (args['alt'] and args['alt_lake']) then duplicate_parameters = duplicate_parameters + 1 end if (args['caption'] and args['caption_lake']) then duplicate_parameters = duplicate_parameters + 1 end if (args['coordinates'] and args['coords']) then duplicate_parameters = duplicate_parameters + 1 end if (args['lake_type'] and args['type']) then duplicate_parameters = duplicate_parameters + 1 end if (args['ocean_type'] and args['type']) then duplicate_parameters = duplicate_parameters + 1 end if (args['part_of'] and args['parent']) then duplicate_parameters = duplicate_parameters + 1 end if (args['basin_countries'] and args['countries']) then duplicate_parameters = duplicate_parameters + 1 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 if (duplicate_parameters > 0) then cats = cats .. '[[Category:Wikipedia infobox body of water articles ' ..       	'using duplicate parameters|' ..         	string.sub(AZ, duplicate_parameters, duplicate_parameters+1) .. ']]' end local no_convert_parameters = 0 if hasnoconvert(args['catchment'] or '') then no_convert_parameters = no_convert_parameters + 1 end if hasnoconvert(args['length'] or '') then no_convert_parameters = no_convert_parameters + 1 end if hasnoconvert(args['width'] or '') then 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 cats = cats .. ''   end

if (unknown_parameters > 0) then cats = cats .. ''   end return cats end return p