×
Create a new article
Write your page title here:
We currently have 30 articles on Ghost Machine Wiki. Type your article name above or create one of the articles listed here!



    Ghost Machine Wiki

    -- This module implements the {{lua}} template.
    
    local yesno = require('Module:Yesno')
    local mList = require('Module:List')
    local mTableTools = require('Module:TableTools')
    local mMessageBox = require('Module:Message box')
    
    local p = {}
    
    function p.main(frame)
    	local origArgs = frame:getParent().args
    	local args = {}
    	for k, v in pairs(origArgs) do
    		v = v:match('^%s*(.-)%s*$')
    		if v ~= '' then
    			args[k] = v
    		end
    	end
    	return p._main(args)
    end
    
    function p._main(args)
    	local modules = mTableTools.compressSparseArray(args)
    	local box = p.renderBox(modules)
    	local trackingCategories = p.renderTrackingCategories(args, modules)
    	return box .. trackingCategories
    end
    
    function p.renderBox(modules)
    	local boxArgs = {}
    	if #modules < 1 then
    		boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
    	else
    		local moduleLinks = {}
    		for i, module in ipairs(modules) do
    			moduleLinks[i] = string.format('[[:%s]]', module)
    		end
    		local moduleList = mList.makeList('bulleted', moduleLinks)
    		boxArgs.text = 'This ' ..
    			(mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') ..
    			' uses [[w:Wikipedia:Lua|Lua]]:\n' .. moduleList
    	end
    	boxArgs.type = 'notice'
    	boxArgs.small = true
    	boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=Lua logo|link=w:Wikipedia:Lua]]'
    	return mMessageBox.main('mbox', boxArgs)
    end
    
    function p.renderTrackingCategories(args, modules, titleObj)
    	if yesno(args.nocat) then
    		return ''
    	end
    	
    	local cats = {}
    	
    	-- Error category
    	if #modules < 1 then
    		cats[#cats + 1] = 'Lua templates with errors'
    	end
    	
    	-- Lua templates category
    	titleObj = titleObj or mw.title.getCurrentTitle()
    	local subpageBlacklist = {
    		doc = true,
    		sandbox = true,
    		sandbox2 = true,
    		testcases = true
    	}
    	if titleObj.namespace == 10 
    		and not subpageBlacklist[titleObj.subpageText]
    	then
    		local category = args.category
    		if not category then
    			local categories = {
    				['Module:String'] = 'Lua String-based templates',
    				['Module:Math'] = 'Templates based on the Math Lua module',
    				['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
    				['Module:Citation'] = 'Lua-based citation templates'
    			}
    			categories['Module:Citation/CS1'] = categories['Module:Citation']
    			category = modules[1] and categories[modules[1]]
    			category = category or 'Lua-based templates'
    		end
    		cats[#cats + 1] = category
    	end
    	
    	for i, cat in ipairs(cats) do
    		cats[i] = string.format('[[Category:%s]]', cat)
    	end
    	return table.concat(cats)
    end
    
    return p
    
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.