Ir para o conteúdo

Módulo:Lua banner

De Wiki TokuDrive

-- This module implements the {{#invoke:Lua banner|main}} template. local yesno = require('Module:Yesno') local mList = require('Module:Lista') 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 = 'Erro: nenhum módulo especificado'
   else
       local moduleLinks = {}
       for i, module in ipairs(modules) do
           moduleLinks[i] = string.format('%s', module)
       end
       local moduleList = mList.makeList('bulleted', moduleLinks)
       local title = mw.title.getCurrentTitle()
       if title.subpageText == "doc" then
           title = title.basePageTitle
       end
       if title.contentModel == "Scribunto" then
           boxArgs.text = 'Este módulo depende dos seguintes outros módulos:' .. moduleList
       else
           boxArgs.text = 'Esta predefinição usa Lua:\n' .. moduleList
       end
   end
   boxArgs.type = 'notice'
   boxArgs.small = true
   boxArgs.image = 'Arquivo:Lua-logo-nolabel.svg'
   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] = '!Predefinições com base em Lua com erros'
   end
   -- Lua templates category
   titleObj = titleObj or mw.title.getCurrentTitle()
   local subpageBlacklist = {
       doc = true,
       Testes = true,
       Testes2 = true,
       Exemplos_para_testes = true
   }
   if titleObj.namespace == 10
       and not subpageBlacklist[titleObj.subpageText]
   then
       local category = args.category
       if not category then
           local categories = {
               ['Módulo:String'] = '!Predefinições de manipulação de cadeias baseadas em Lua‎',
               ['Módulo:Math'] = '!Predefinições com base no módulo Lua Math',
               ['Módulo:BaseConvert'] = '!Predefinições com base no módulo BaseConvert‎',
               ['Módulo:Citação'] = '!Predefinições de citação com base em Lua'
           }
           categories['Módulo:Citação/CS1'] = categories['Módulo:Citação']
           category = modules[1] and categories[modules[1]]
           category = category or '!Predefinições com base em Lua'
       end
       cats[#cats + 1] = category
       local protLevels = {
           autoconfirmed = 1,
           extendedconfirmed = 2,
           templateeditor = 3,
           sysop = 4
       }
   --    local currentProt
   --    if titleObj.id ~= 0 then
           -- id is 0 (page does not exist) if am previewing before creating a template.
   --        currentProt = titleObj.protectionLevels["edite"][1]
   --    end
   --    if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
   --    for i, module in ipairs(modules) do
   --        local moduleProt = mw.title.new(module).protectionLevels["edite"][1]
   --        if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
   --        if moduleProt < currentProt then
   --            cats[#cats + 1] = "!Predefinições que usam módulos de Lua subprotegidos"
   --            break
   --        end
   --    end
   end
   for i, cat in ipairs(cats) do
       cats[i] = string.format(, cat)
   end
   return table.concat(cats)

end

return p