Módulo:File link
Saltar para a navegação
Saltar para a pesquisa
A documentação para este módulo pode ser criada na página Módulo:File link/doc
-- Este módulo fornece uma biblioteca para formatação de ligações wiki ('wikilinks') de arquivos.
local yesno = require('Módulo:Yesno/Testes')
local checkType = require('libraryUtil').checkType
local p = {}
function p._main(args)
checkType('_main', 1, args, 'table')
-- Isto é basicamente 'libraryUtil'.'checkTypeForNamedArg', mas nós estamos rolando nossa
-- própria função para obter o nível de erro correto.
local function checkArg(key, val, level)
if type(val) ~= 'string' then
error(string.format(
"erro de tipo no parâmetro '%s' de '_main' (sequência (string) esperada, obteve %s)",
key, type(val)
), level)
end
end
local ret = {}
-- Adiciona um parâmetro posicional ao 'buffer'.
local function addPositional(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = val
end
-- Adiciona um parâmetro nomeado ao 'buffer'. Assumimos que o nome do parâmetro
-- é o mesmo que a chave do argumento.
local function addNamed(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = key .. '=' .. val
end
-- Nome do arquivo
checkArg('file', args.file, 3)
ret[#ret + 1] = 'Ficheiro:' .. args.file
-- Formatação
if args.format then
checkArg('format', args.format)
if args.formatfile then
checkArg('formatfile', args.formatfile)
ret[#ret + 1] = args.format .. '=' .. args.formatfile
else
ret[#ret + 1] = args.format
end
end
-- Borda
if yesno(args.border) then
ret[#ret + 1] = 'border'
end
addPositional('location')
addPositional('alignment')
addPositional('size')
addNamed('upright')
addNamed('link')
addNamed('alt')
addNamed('page')
addNamed('class')
addNamed('lang')
addNamed('start')
addNamed('end')
addNamed('thumbtime')
addPositional('caption')
return string.format('[[%s]]', table.concat(ret, '|'))
end
function p.main(frame)
local origArgs = require('Módulo:Arguments/Testes').getArgs(frame, {
wrappers = 'Predefinição:Ligação de arquivo'
})
if not origArgs.file then
error("parâmetro 'file' a partir de [[Predefinição:Ligação de arquivo]] ausente", 0)
end
-- Copia os argumentos que foram passados para uma nova tabela para evitar procurar
-- todos os parâmetros possíveis no objeto de quadro ('frame').
local args = {}
for k, v in pairs(origArgs) do
-- Torna "_BLANK" um argumento especial para adicionar um parâmetro em branco. Para uso em
-- predefinições condicionais, etc. Isso é útil para argumentos em branco serem
-- ignorados, mas ainda precisamos de uma maneira de especificá-los para que possamos fazer
-- coisas como [[Ficheiro:Example.png|link=]].
if v == '_BLANK' then
v = ''
end
args[k] = v
end
return p._main(args)
end
return p