Difference between revisions of "Module:RenderProfile"
Jump to navigation
Jump to search
blackwiki>Dragons flight |
blackwiki>Dragons flight |
||
| Line 44: | Line 44: | ||
count = #v; | count = #v; | ||
v = table.concat(v); | v = table.concat(v); | ||
| − | v = v:gsub( "=", " | + | v = v:gsub( "=", "{{=}}" ); |
| − | v = v:gsub( "|", " | + | v = v:gsub( "|", "{{!}}" ); |
| − | |||
| − | |||
result = result .. "| " .. k .. " || " .. | result = result .. "| " .. k .. " || " .. | ||
tostring( count ) .. " || " .. | tostring( count ) .. " || " .. | ||
| Line 58: | Line 56: | ||
function p.time( frame ) | function p.time( frame ) | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
local start = os.clock(); | local start = os.clock(); | ||
| + | local start2 = os.time(); | ||
| + | local test = frame.args[1]; | ||
test = frame:preprocess( test ); | test = frame:preprocess( test ); | ||
local stop = os.clock(); | local stop = os.clock(); | ||
| + | local stop2 = os.time(); | ||
return string.format("%5.3f", stop - start); | return string.format("%5.3f", stop - start); | ||
Revision as of 03:59, 27 March 2013
p = {};
function p.partition( frame )
local page = frame.args[1];
local tt = mw.title.new( page );
if tt == nil then
return "No such page";
end
local content = tt:getContent();
local result = '';
local blocks = {};
local name;
local current;
for block in content:gmatch( "%b{}" ) do
name = block:match( "{{%s*([^|}]-)%s*[|}]" );
if name ~= nil then
name = name:lower();
current = blocks[ name ];
if current == nil then
current = {};
end
table.insert( current, block );
blocks[ name ] = current;
end
end
local blocks2 = {};
for k, v in pairs( blocks ) do
table.insert( blocks2, {k, v} );
end
blocks = blocks2;
table.sort( blocks, comp );
local count;
result = "{| class='wikitable sortable' \n|-\n!Template !! Iterations !! Time (s) \n|-\n";
for _, v in ipairs( blocks ) do
k = v[1];
v = v[2];
count = #v;
v = table.concat(v);
v = v:gsub( "=", "{{=}}" );
v = v:gsub( "|", "{{!}}" );
result = result .. "| " .. k .. " || " ..
tostring( count ) .. " || " ..
"{{#invoke: RenderProfile | time | " .. v .. "}}" .. "\n|-\n";
end
result = result .. "|}";
return result;
end
function p.time( frame )
local start = os.clock();
local start2 = os.time();
local test = frame.args[1];
test = frame:preprocess( test );
local stop = os.clock();
local stop2 = os.time();
return string.format("%5.3f", stop - start);
end
function comp( a, b )
return #(a[2]) > #(b[2]);
end
return p