Module:Infobox cyclist tracking explained
local p = function p.tracking(frame) function isblank(val) return (val
nil) or val:match('^[%s]*$') end local function isnotblank(s) return s and s:match('^%s*(.-)%s*$') ~= end local cats = local args = frame:getParent.args local hasbr = 0 local hasli = 0 local hasul = 0 local hasnewline = 0 local toohighnumber = 0 local missingyears = local missingteams = local hasyears = local hasteams = local prefixes = local maxindices = for k=1,3 do local prefix = prefixes[k] local maxindex = maxindices[k] if (isnotblank(args[prefix .. 'years'])) then hasyears[k] = 1 end if (isnotblank(args[prefix .. 'years']) and isblank(args[prefix .. 'teams'])) then missingteams[k] = 1 end if (isnotblank(args[prefix .. 'teams'])) then hasteams[k] = 1 end if (isnotblank(args[prefix .. 'teams']) and isblank(args[prefix .. 'years'])) then missingyears[k] = 1 end if (args[prefix .. 'years'] or ):match('<[\t ]*[Bb]') then hasbr = 1 end if (args[prefix .. 'years'] or ):match('<[\t ]*[Ll][Ii]') then hasli = 1 end if (args[prefix .. 'years'] or ):match('<[\t ]*[Uu][Ll]') then hasul = 1 end if (args[prefix .. 'teams'] or ):match('<[\t ]*[Bb]') then hasbr = 1 end if (args[prefix .. 'teams'] or ):match('<[\t ]*[Ll][Ii]') then hasli = 1 end if (args[prefix .. 'teams'] or ):match('<[\t ]*[Uu][Ll]') then hasul = 1 end if (args[prefix .. 'years'] or ):match('[\r\n]') then hasnewline = 1 end if (args[prefix .. 'teams'] or ):match('[\r\n]') then hasnewline = 1 end for i = 1,maxindex do if (isnotblank(args[prefix .. 'years'.. tostring(i)])) then hasyears[k] = 1 end if (isnotblank(args[prefix .. 'years'.. tostring(i)]) and isblank(args[prefix .. 'team'.. tostring(i)])) then missingteams[k] = 1 end if (isnotblank(args[prefix .. 'team'.. tostring(i)])) then hasteams[k] = 1 end if (isnotblank(args[prefix .. 'team'.. tostring(i)]) and isblank(args[prefix .. 'years'.. tostring(i)])) then missingyears[k] = 1 end if(args[prefix .. 'years' .. tostring(i)] or ):match('<[\t ]*[Bb]') then hasbr = 1 end if(args[prefix .. 'years' .. tostring(i)] or ):match('<[\t ]*[Ll][Ii]') then hasli = 1 end if(args[prefix .. 'years' .. tostring(i)] or ):match('<[\t ]*[Uu][Ll]') then hasul = 1 end if(args[prefix .. 'team' .. tostring(i)] or ):match('<[\t ]*[Bb]') then hasbr = 1 end if(args[prefix .. 'team' .. tostring(i)] or ):match('<[\t ]*[Ll][Ii]') then hasli = 1 end if(args[prefix .. 'team' .. tostring(i)] or ):match('<[\t ]*[Uu][Ll]') then hasul = 1 end if(args[prefix .. 'years' .. tostring(i)] or ):match('[\r\n]') then hasnewline = 1 end if(args[prefix .. 'team' .. tostring(i)] or ):match('[\r\n]') then hasnewline = 1 end end if (isnotblank(args[prefix .. 'team'.. tostring(maxindex+1)]) or isnotblank(args[prefix .. 'years'.. tostring(maxindex+1)])) then toohighnumber = 1 end end if (isnotblank(args['weight'])) then local w = frame:expandTemplate w = mw.ustring.gsub(w, '[≈~]', ' ') w = mw.ustring.gsub(w, 'c. ', ) w = mw.ustring.gsub(w, '', ) w = mw.ustring.gsub(w, '–[%d][%d]*%.[%d]', ) w = mw.ustring.gsub(w, '–[%d][%d]*', ) w = mw.ustring.gsub(w, '[%d][%d]%.[%d] kg %([%d][%d]* lb%)', ) w = mw.ustring.gsub(w, '[%d][%d]%.[%d] kg %([%d][%d]* lb; [%d][%.%d]* st%)', ) w = mw.ustring.gsub(w, '[%d][%d]%.[%d] kg %([%d][%d]* lb; [%d][%d]* st [%d][%d]* lb%)', ) w = mw.ustring.gsub(w, '[%d][%d]%.[%d] kg %([%d][%.%d]* st; [%d][%.%d]* lb%)', ) w = mw.ustring.gsub(w, '[%d][%.%d]* kg %([%d][%d]* lb%)', ) w = mw.ustring.gsub(w, '[%d][%d]* kg %([%d][%d]* lb; [%d][%.%d]* st%)', ) w = mw.ustring.gsub(w, '[%d][%d]* kg %([%d][%d]* lb; [%d][%d]* st [%d][%d]* lb%)', ) w = mw.ustring.gsub(w, '[%d][%d]* kg %([%d][%d]* st; [%d][%.%d]* lb%)', ) w = mw.ustring.gsub(w, '[%d][%d]* st [%d][%d]* lb %([%d][%d]* kg%)', ) w = mw.ustring.gsub(w, '[%d][%d]* lb %([%d][%d]* kg%)', ) w = mw.ustring.gsub(w, '[%d][%d]* lb %([%d][%d]* kg; [%d][%.%d]* st%)', ) w = mw.ustring.gsub(w, '[%d][%d]*[]*kg ', ) w = mw.ustring.gsub(w, '[%d][%d]*[]*lb ', ) w = mw.ustring.gsub(w, '%([1-2][%d][%d][%d]%)', ) w = mw.ustring.gsub(w, '%([1-2][%d][%d][%d]%-[%d][%d]%)', ) w = mw.text.unstrip(w) w = mw.ustring.gsub(w, '[<]', '.LT.') w = mw.ustring.gsub(w, '[>]', '.GT.') w = mw.ustring.gsub(w, '&', '&') if(isnotblank(w)) then cats = cats .. '' -- cats = cats .. '
Atypical value: weight = ' .. w .. '' end end if (isnotblank(args['height'])) then local h = frame:expandTemplate h = mw.ustring.gsub(h, '
<%/templatestyles>', ) h = mw.ustring.gsub(h, '[≈~]', ' ') h = mw.ustring.gsub(h, 'c. ', ) h = mw.ustring.gsub(h, '', ) h = mw.ustring.gsub(h, '([%d][%d]*)[^<>]
1<%/span>[^<>]*2<%/span><%/span>', '%1') h = mw.ustring.gsub(h, '1<%/span>[^<>]*2<%/span><%/span>', '0') h = mw.ustring.gsub(h, '([%d][%d]*) <%/span>1<%/sup>⁄2<%/sub><%/span>', '%1') h = mw.ustring.gsub(h, '1<%/sup>⁄2<%/sub><%/span>', '0') h = mw.ustring.gsub(h, '[1-2]%.[%d][%d]? m %([4-7] ft [%d][%d]* in%)', ) h = mw.ustring.gsub(h, '[1-2][%d][%d] cm %([4-7] ft [%d][%d]* in%)', ) h = mw.ustring.gsub(h, '[4-7] ft [%d][%d]* in %([1-2]%.[%d][%d] m%)', ) h = mw.ustring.gsub(h, '[4-7] ft [%d][%d]* in %([1-2][%d][%d] cm%)', ) h = mw.ustring.gsub(h, '[1-2]%.[%d][%d][]*m ', ) h = mw.ustring.gsub(h, '[1-2][%d][%d][]*cm ', ) h = mw.ustring.gsub(h, '[4-7] ft [%d][%d]* in ', ) h = mw.ustring.gsub(h, '%([1-2][%d][%d][%d]%)', ) h = mw.ustring.gsub(h, '%([1-2][%d][%d][%d]-[%d][%d]%)', ) h = mw.text.unstrip(h) h = mw.ustring.gsub(h, '[<]', '.LT.') h = mw.ustring.gsub(h, '[>]', '.GT.') h = mw.ustring.gsub(h, '&', '&') if(isnotblank(h)) then cats = cats .. '' -- cats = cats .. 'Atypical value: height = ' .. h .. '' end end if (hasli > 0) then cats = cats .. '' end if (hasul > 0) then cats = cats .. '' end if (hasbr > 0) then cats = cats .. '' end if (hasnewline > 0) then cats = cats .. '' end for k=1,3 do if (missingyears[k] > 0 and hasyears[k] > 0) then cats = cats .. '' end if (missingteams[k] > 0 and hasteams[k] > 0) then cats = cats .. '' end end return catsend return p