Module:CiteConversionTest
From The Crowdsourced Resource-Based Economy Knowledgebase
c = {}
function c.test( frame )
local target = frame.args[1] or frame.args.target; local tt = mw.title.new( target ); local content = tt:getContent(); local result = ; local template; local i = 1; for template in string.gmatch( content, '%b{}' ) do local mode, param; mode, param = string.match( template, 'Template:%s*cite (%w*)%s*' ); if mode ~= nil and mode ~= 'quick' then result = result .. '\nTemplate:Cite compare\n"; i = i + 1; end mode, param = string.match( template, 'Template:%s*cite quick%s*' ); if mode ~= nil then result = result .. '\nTemplate:Cite compare\n"; i = i + 1; end if i > 90 then break; end --prevent time outs end return frame:preprocess(result);
end
function c.gather( frame )
local typ = frame.args[1] or frame.args.mode; local start = frame.args[2] or frame.args.start; local required = frame.args[3] or frame.args.require;
local tt = mw.title.new( start ); local content = tt:getContent();
local targets = {}; for w in string.gmatch( content, '%[%[(%w-)%]%]' ) do targets[w] = true; end local targets2 = {} for k in pairs( targets ) do tt = mw.title.new( k ); if tt ~= nil then content = tt:getContent() or ""; else content = nil; end if content ~= nil then for w in string.gmatch( content, '%[%[(%w-)%]%]' ) do targets2[w] = true; end end end targets = targets2;
local result = ; local cnt = 0; local param_list = {}; for k in pairs( targets ) do local tt = mw.title.new( k ); cnt = cnt + 1; if tt ~= nil then local content = tt:getContent() or ; local template; local i = 1; for template in string.gmatch( content, '%b{}' ) do local param; if typ == 'citation' then param = string.match( template, 'Template:%s*' .. typ .. '%s*' ); else param = string.match( template, 'Template:%s*cite ' .. typ .. '%s*' ); end
if param ~= nil then local good = false; for kw in string.gmatch( param, "[%s|](%w-)%s*=" ) do if required ~= nil then if kw == required then good = true; end else if param_list[kw] == nil then good = true; param_list[kw] = true; end end end if good or (required==nil and math.random(50) == 1) then result = result .. frame:preprocess( '{{cite compare|mode=' .. typ .. " | " .. param .. "}}" ) .. "\n
"; end end end end if cnt > 150 then break; end end
return result
end
function c.casing( frame )
local start = frame.args[1] or frame.args.start;
local tt = mw.title.new( start ); local content = tt:getContent();
local targets = {}; for w in string.gmatch( content, '%[%[(%w-)%]%]' ) do targets[w] = true; end local targets2 = {} for k in pairs( targets ) do tt = mw.title.new( k ); content = tt:getContent(); for w in string.gmatch( content, '%[%[(%w-)%]%]' ) do targets2[w] = true; end end targets = targets2;
local result = ; local cnt = 0; local param_list = {}; for k in pairs( targets ) do local tt = mw.title.new( k ); cnt = cnt + 1; if tt ~= nil then local content = tt:getContent() or ; local template; local i = 1; for template in string.gmatch( content, '%b{}' ) do local mode, param; mode, param = string.match( template, 'Template:%s*cite (%w-)%s*' ); if param ~= nil then local good = false; for kw in string.gmatch( param, "[%s|](%w-)%s*=" ) do if kw:match('[A-Z]') ~= nil then good = true; end end if good then result = result .. frame:preprocess( '{{cite compare|mode=' .. mode .. " | " .. param .. "}}" ) .. "\n
"; end end end end if cnt > 150 then break; end end
return result
end
return c;