Module:Xswitch

p = {}

function extractprofile(profile, type) -- takes a profile like Templates:xswitch/test-profile and extracts the levels and results, _instead_ of having them passed as parameters

local x = 0 local pattern = {} local mins = {} local results = {} for min,result in mw.ustring.gmatch(profile, "(.-)|(.-)\n") do     if min then if type then min = tostring(min) else min = tonumber(min) end -- and I have nofklu WHAT this does to Unicode, sorry! Tostring is supposedly not necessary but I am suspicious. table.insert(mins, min) table.insert(results, (result or "")) end end return mins,results end

function p.main(frame) local args = frame.args local parent, pargs, type, profile, input, number if frame.getparent then parent = frame:getparent pargs = parent.args type = pargs.type input = pargs[1] end -- I have nofklu why this gives me an error this time. Say who what? type = type or args.type or nil -- sort as number or string. Default to number (nil), think. profile = profile or args.profile or nil -- File to transclude to obtain the thresholds input = input or args[1] or "" if type then input = tostring(input) else input = tonumber(input) end local mins = {} local results = {} if profile then mins,results = extractprofile(profile, type) number=table.maxn(mins) end if not(mins[1]) then -- (no profile or profile extraction unsuccessful) mins={}; results={} -- suspicious mind... number = 0 repeat number = number + 1 local min if parent then min = pargs[number * 2]; result = pargs[number * 2 + 1] else min = nil; result = nil end min = min or args[number * 2] or nil -- numbered params from 2 on alternate as threshold and result local result = result or args[number*2+1] or "" if min then if type then min = tostring(min) else min = tonumber(min) end table.insert(mins, min) table.insert(results, (result or "")) end until not(mins[number]) end local toolow = results[number - 1] or "" while number > 1 do     number = number-1 if input > mins[number] then output = results[number]; break end end

return (output or toolow or "")

end

return p