Module:AuthorSummary
Documentation for this module may be created at Module:AuthorSummary/doc
local getArgs = require('Module:Arguments').getArgs; local defArgs = require('Module:Arguments').defaultArgs; local authorSummary = {}; function authorSummary.vbar( frame ) local args = defArgs(getArgs(frame), 1, ""); local arg = args[1]; local Ja = {} -- journals local Yr = {} -- publication years local first = 10000 local last = 0 for au, ja, yr in arg:gmatch("([%a:_]+),([%a_\.]+),(%d+),(%d+)") do table.insert(Ja, ja); yr = tonumber(yr) if (yr < first) then first = yr end if (yr > last) then last = yr end if (Yr[yr] == null) then Yr[yr] = 1 else Yr[yr] = 1 + Yr[yr] end end step = math.ceil((last - first+1)/10) output = "size=500x200;title=publication chart;legend=0.8x0;label=" if (step > 1) then output = output..first.."\\n-"..(first+step-1) else output = output..first end loop = math.ceil((last - first+1)/step) for i=first+step, first+(step*loop)-1, step do if (step > 1) then output = output..","..i.."\\n-"..(i+step-1) else output = output..","..i end end for i=0, step-1 do if (step == 1) then output = output..";count=" else output = output..";mod "..i.."=" end for y = first, first+(step*loop)-1 do if (y % step == i) then if (Yr[y] == nil) then output = output.."0," else output = output..Yr[y].."," end end end end return output..";" end function authorSummary.coauthors( frame ) local args = defArgs(getArgs(frame), 1, ""); local arg = args[1]; local author = arg:gmatch("%S+"); local Au = {}; -- authors local count =0; local total =0; local paper =0.0; for aus, ja, yr in arg:gmatch("([%a:_]+),([%a_\.]+),(%d+),(%d+)") do paper = paper + 1; for au in string.gmatch(aus,"[%a_]+") do if (author ~= au) then if (Au[au] == null) then Au[au] = 1; count = count + 1; else Au[au] = 1 + Au[au]; end end total = total + 1; end end local output = count .. " coauthors total.<br>(average" .. string.format("%.1f",total / paper) .. " / report)\n"; for k, v in pairs(Au) do output = output .. "# {{#volatile:AuthorSummary|" .. k .. " (" .. v .. ")|" .. k .. "|Reference}}\n"; end return frame:preprocess(output); end return authorSummary;