From Wikipedia, the free encyclopedia

local p = {}

local getArgs = require('Module:Arguments').getArgs



-- Returns a table with the keys of the passed table as its values

local function getTableKeys(tbl)

	local keys = {}

	for k,_ in pairs(tbl) do

		keys#keys + 1 = k

	end



	table.sort(keys)

	return keys

end



-- Construct a table of the tagged CSDs and any arguments passed in for each CSD

-- Example format: |G6|rationale{{=}}G6 rationale|xfd|G7|rationale{{=}}G7 rationale

local function constructCsdTable(args)

	local tbl = {}

    local current = ''															-- Code of current CSD being processed. Its value will be the last CSD-like param read (eg 'G6')

    local size = 0

    for k,v in pairs(args) do

        if string.match(v, '^[GgAaFfCcUuRrTtPp]%d%d?$') then						-- Begin collecting args for a new CSD

            current, size = string.lower(v), 0

            tblcurrent = {['size' = size}

        else																	-- Add the arg to the CSD being processed (ie, the corresponding CSD)

        	local arg = mw.text.split(v, '=')

        	tblcurrent][string.lower(arg1])] = arg2

        	size = size + 1														-- Increment the 'size', ie number of params passed for a particular CSD

        	tblcurrent]['size' = size

        end

    end

    

    return tbl

end



-- Build the Db-meta wrapper template

local function build(frame, args)

	local passThruArgs = {'rationale', 'xfd', 'user', 'blanked', 'url', 'url2', 'url3', 'source', 'article', 'location', 'filename', 'criterion'} -- Arguments we'll pass through unchanged to the Db-meta wrapper

	local csdTable = constructCsdTable(args)

	local csdKeys = getTableKeys(csdTable)

	--if true then return mw.dumpObject(csdTable) end



    local builtCsdTemplates = {}

    local summary = ""

    

    -- Loop through CSDs (eg G1, G2)

    local n = 0

    for k,v in pairs(csdTable) do

    	n = n + 1

    	local templateArgs = {

    		'raw' = 'yes',

    		'nocat' = 'true'													-- for test purposes

        }

        

        -- Add to summary the name of the CSD. Plus open brackets if we've got extra params

        summary = summary .. string.upper(k) .. (v'size' > 0 and ' (' or '')

        

        -- add values to templateArgs (and summary) in any custom params we got for this CSD, eg Rationale, URL

        for _,arg in ipairs(passThruArgs) do

        	if varg then

        		templateArgsarg = varg

        		summary = summary .. arg .. ': ' .. varg .. (v'size' > _ and ', ' or '')

        	end

        end

        -- Close brackets if we had custom params. Add a comma if we've got another CSD

        summary = summary .. (v'size' > 0 and ')' or '') .. (#csdKeys > n and ', ' or '')

    	

    	-- Save the built template

    	table.insert(builtCsdTemplates, frame:expandTemplate{ title = 'Db-'..k, args = templateArgs })

    end

    

    -- Construct Db-meta wrapper, composed of all the built CSD templates

    local dbTemplate = frame:expandTemplate{ title = 'Db-meta', args = {

    		1 = '&#32;for the following reasons:</b><ul><li>'..table.concat(builtCsdTemplates, '</li><li>') .. '</li></ul> <b>The page may be deleted under any criterion that is valid',

    		'criterion' = 'NA',

    		'temp' = 'Db-notice-multiple',

    		'temp2' = '|'..table.concat(csdKeys, '|'),

    		'summary' = 'Multiple reasons: ' .. summary,

    		

    		-- forward given params to Db-meta

    		'bot' = args'bot' or '',

    		'blanked' = args'blanked' or (csdTable'g10' and 'yes') or '',

    		'divblank' = args'divblank' or (csdTable'g10' and 'yes') or '',

    		'help' = args'help' or '',

    }}



    return dbTemplate

end



-- Exports

function p.main(frame)

	local args = getArgs(frame)

	return build(frame, args)

end



-- Test

function p.dump(frame)

	return mw.dumpObject(mw.text.unstripNoWiki(frame.args1]))

end



return p
From Wikipedia, the free encyclopedia

local p = {}

local getArgs = require('Module:Arguments').getArgs



-- Returns a table with the keys of the passed table as its values

local function getTableKeys(tbl)

	local keys = {}

	for k,_ in pairs(tbl) do

		keys#keys + 1 = k

	end



	table.sort(keys)

	return keys

end



-- Construct a table of the tagged CSDs and any arguments passed in for each CSD

-- Example format: |G6|rationale{{=}}G6 rationale|xfd|G7|rationale{{=}}G7 rationale

local function constructCsdTable(args)

	local tbl = {}

    local current = ''															-- Code of current CSD being processed. Its value will be the last CSD-like param read (eg 'G6')

    local size = 0

    for k,v in pairs(args) do

        if string.match(v, '^[GgAaFfCcUuRrTtPp]%d%d?$') then						-- Begin collecting args for a new CSD

            current, size = string.lower(v), 0

            tblcurrent = {['size' = size}

        else																	-- Add the arg to the CSD being processed (ie, the corresponding CSD)

        	local arg = mw.text.split(v, '=')

        	tblcurrent][string.lower(arg1])] = arg2

        	size = size + 1														-- Increment the 'size', ie number of params passed for a particular CSD

        	tblcurrent]['size' = size

        end

    end

    

    return tbl

end



-- Build the Db-meta wrapper template

local function build(frame, args)

	local passThruArgs = {'rationale', 'xfd', 'user', 'blanked', 'url', 'url2', 'url3', 'source', 'article', 'location', 'filename', 'criterion'} -- Arguments we'll pass through unchanged to the Db-meta wrapper

	local csdTable = constructCsdTable(args)

	local csdKeys = getTableKeys(csdTable)

	--if true then return mw.dumpObject(csdTable) end



    local builtCsdTemplates = {}

    local summary = ""

    

    -- Loop through CSDs (eg G1, G2)

    local n = 0

    for k,v in pairs(csdTable) do

    	n = n + 1

    	local templateArgs = {

    		'raw' = 'yes',

    		'nocat' = 'true'													-- for test purposes

        }

        

        -- Add to summary the name of the CSD. Plus open brackets if we've got extra params

        summary = summary .. string.upper(k) .. (v'size' > 0 and ' (' or '')

        

        -- add values to templateArgs (and summary) in any custom params we got for this CSD, eg Rationale, URL

        for _,arg in ipairs(passThruArgs) do

        	if varg then

        		templateArgsarg = varg

        		summary = summary .. arg .. ': ' .. varg .. (v'size' > _ and ', ' or '')

        	end

        end

        -- Close brackets if we had custom params. Add a comma if we've got another CSD

        summary = summary .. (v'size' > 0 and ')' or '') .. (#csdKeys > n and ', ' or '')

    	

    	-- Save the built template

    	table.insert(builtCsdTemplates, frame:expandTemplate{ title = 'Db-'..k, args = templateArgs })

    end

    

    -- Construct Db-meta wrapper, composed of all the built CSD templates

    local dbTemplate = frame:expandTemplate{ title = 'Db-meta', args = {

    		1 = '&#32;for the following reasons:</b><ul><li>'..table.concat(builtCsdTemplates, '</li><li>') .. '</li></ul> <b>The page may be deleted under any criterion that is valid',

    		'criterion' = 'NA',

    		'temp' = 'Db-notice-multiple',

    		'temp2' = '|'..table.concat(csdKeys, '|'),

    		'summary' = 'Multiple reasons: ' .. summary,

    		

    		-- forward given params to Db-meta

    		'bot' = args'bot' or '',

    		'blanked' = args'blanked' or (csdTable'g10' and 'yes') or '',

    		'divblank' = args'divblank' or (csdTable'g10' and 'yes') or '',

    		'help' = args'help' or '',

    }}



    return dbTemplate

end



-- Exports

function p.main(frame)

	local args = getArgs(frame)

	return build(frame, args)

end



-- Test

function p.dump(frame)

	return mw.dumpObject(mw.text.unstripNoWiki(frame.args1]))

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook