Difference between revisions of "Module:Lua banner"

From Lojban
Jump to navigation Jump to search
 
m (1 revision)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
-- 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 = 'Uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
 +
end
 +
boxArgs.type = 'notice'
 +
boxArgs.small = true
 +
boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=Lua logo|link=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

Latest revision as of 07:42, 26 June 2014

-- This module implements the

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 = 'Error: no modules specified' 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 = 'Uses Lua:\n' .. moduleList end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = 'Lua logo' 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(, cat) end return table.concat(cats) end

return p