Module:Good Articles

local p = {}

p.main = function (frame) local NNN = 2 -- provide counts only over this threshold local args = require("Module:Arguments").getArgs(frame) -- expect args.shortcut e.g. GA/H, args.type e.g. History, args.text a long list local subpage = frame:preprocess("") -- I never did look up if there's a better way to do this... local header = "" local shortcuts = "" local type = args.type or "error: specify type = Good Articles type" local image = '' if args.image then image = '22px|left' end local sectioncount = 0 if (subpage == type or args.override) then -- I haven't figured out how to deal with missing shortcut so why pretend shortcuts = frame:expandTemplate{ title = 'shortcut', args = { args.shortcut } } header = frame:expandTemplate{ title = 'Wikipedia:Good articles/header', args = { shortcuts = shortcuts } } end local introtext = args.text or '' replace = function(t) local xxxx, links = mw.ustring.gsub(t, "(%[%^%[%-%]%])", "%1", nil) -- count how many links if links &#x3e;= NNN then t = t .. "&#x3c;small&#x3e; (" .. tostring(links) .. "&#x26;nbsp;articles)&#x3c;/small&#x3e;" end return t .. "\n" end local sectionfooter = [===[ &#x3c;/div&#x3e; &#x3c;/div&#x3e; &#x3c;!-- end of list --&#x3e;]===] -- comments in the text below are historical from the page's own markup local output = header .. [===[&#x3c;!-- only include header on this page --&#x3e;

&#x3c;div style="clear:both;"&#x3e; &#x3c;!-- DO NOT REMOVE THIS DIV, USED TO FORCE IE TO DISPLAY BACKGROUND FOR ARTS DIV --&#x3e; &#x3c;/div&#x3e; &#x3c;div style="clear:both;"&#x3e; &#x3c;span id="]===] .. type .. [===[" &#x3e;&#x3c;/span&#x3e; &#x3c;div style="padding:5px 5px 8px 5px; background-color:#66CC66; text-align:left; font-size:larger;"&#x3e;]===] .. image .. [===[''']===] .. type .. [===['''&#x3c;/div&#x3e; &#x3c;div style="text-align:left;"&#x3e; &#x3c;/div&#x3e; &#x3c;/div&#x3e; ]===] .. introtext local section = 0 local finaltext = '' repeat local wrap = true section = section + 1 local text = (args['section' .. tostring(section)] or args[section] or '') local title = args['title' .. tostring(section)] if (not title) then if (text == '') then break else local wrap = false output = output .. text -- sections without headers go in unwrapped end else local image = args['image' .. tostring(section)] text = mw.ustring.gsub(text .. "\n=", "(==.-)\n%s*%f[=]", replace) text = mw.ustring.sub(text,1,-2) -- ditching "=" mark from line above if (image) then image = '22px|left' else image = '' -- make section without an image end output = output .. [===[&#x3c;div class="mw-collapsible" style="clear:both;padding: 4px;border: 1px solid #a2a9b1;font-size: 95%;"&#x3e; &#x3c;div style="padding:2px 2px 2px 30px; background-color:#FFFAF0; font-size:larger;font-weight: bold;"&#x3e;]===] .. image .. title .. [===[&#x3c;/div&#x3e; &#x3c;div class="mw-collapsible-content" style="font-size: 100%"&#x3e;

&#x26;shy;&#x26;nbsp;
]===] .. text .. sectionfooter end until false return output end

function p.subsection(frame) if not mw.ustring.find( (frame.args[1] or frame:getParent.args[1] or ) ,'[[',1,true) then		return '&#x3c;small&#x3e;(0&#x26;nbsp;articles)&#x3c;/small&#x3e;'	else		local linkList, count = mw.ustring.gsub(mw.text.trim(frame.args[1] or frame:getParent.args[1]), '\n', '&#x26;nbsp;–\n')		return linkList .. '&#x3c;small&#x3e;&#x26;nbsp;&#x26;nbsp;(' .. (count + 1) .. '&#x26;nbsp;article' .. ( (count ~= 0) and 's' or ) .. ')&#x3c;/small&#x3e;'	end end

return p