Módulo:Link de arquivo

Documentação do módulo[ver] [editar] [histórico] [purgar]

Este módulo é usado para construir ligações[a] de texto wiki para arquivos. Ele é útil principalmente para predefinições e módulos que usam lógica complicada para fazer ligações[a] de arquivos. Ligações[a] de arquivos simples devem ser feitas diretamente com marcação de texto wiki, pois usa menos recursos do que chamar este módulo. Para obter ajuda com marcação de arquivo de texto wiki, por favor consulte a documentação em mediawiki.org.

Uso a partir de texto wiki

A partir do texto wiki, este módulo deve ser chamado a partir de uma predefinição, geralmente {{Ligação de arquivo}}. Consulte a página da predefinição para obter a documentação. No entanto, ele também pode ser chamado usando a sintaxe {{#invoke:Link de arquivo|main|argumentos}}.

Uso a partir de Lua

Primeiro, você precisa importar o módulo.

local mFileLink = require('Módulo:Link de arquivo')

Então você pode fazer ligações[a] de arquivos usando a função _main.

mFileLink._main(args)

args é uma tabela de argumentos que pode ter as seguintes chaves:

  • file - o nome do arquivo. (necessário)
  • format - o formato do arquivo, por exemplo: 'thumb', 'thumbnail', 'frame', 'framed', ou 'frameless'.
  • formatfile - um nome de arquivo para especificar com a opção de formato 'thumbnail'. O nome de arquivo especificado será usado em vez da miniatura gerada automaticamente.
  • border - defina como true ou "yes" (ou qualquer outro valor reconhecido como true por Módulo:Yesno) para definir uma borda para a imagem.
  • location - o alinhamento horizontal do arquivo, por exemplo: 'right', 'left', 'center', ou 'none'.
  • alignment - o alinhamento vertical do arquivo, por exemplo: 'baseline', 'middle', 'sub', 'super', 'text-top', 'text-bottom', 'top', ou 'bottom'.
  • size - o tamanho da imagem, por exemplo: '100px', 'x100px' ou '100x100px'.
  • upright - o parâmetro 'upright', usado para definir o tamanho de imagens altas e finas.
  • link - a página para a qual o arquivo deve estar vinculado. Use a sequência[b] em branco '' para suprimir a ligação[a] padrão para a página de descrição do arquivo.
  • alt - o texto alternativo. Use a sequência{{Nre|nome=string em branco '' para suprimir o texto alternativo padrão.
  • caption - uma legenda para o arquivo.
  • page - define um número de página para arquivos com várias páginas, como arquivos em formato de documento portátil (F.D.P.)[c]
  • class - adiciona um parâmetro class às ligações[a] de imagem. O software MediaWiki adiciona esse parâmetro ao atributo class="..." do elemento <img /> da imagem quando a página é renderizada em linguagem de marcação de hipertexto (L.M.Ht.)[d].
  • lang - adiciona um atributo de lingyagem para especificar em qual linguagem renderizar o arquivo.
  • start - especifica um tempo de início para arquivos de áudio e vídeo.
  • end - especifica um tempo de término para arquivos de áudio e vídeo.
  • thumbtime - especifica o tempo a ser usado para gerar a imagem em miniatura para arquivos de vídeo.

Para ver o efeito de cada um desses parâmetros, consulte a página de ajuda de imagens em mediawiki.org.

Exemplos

Somente com o arquivo:

mFileLink.main{file = 'Example.png'}
-- Renderiza como [[Ficheiro:Example.png]]

Com opções de formato, tamanho, ligação[a] e legenda:

mFileLink.main{
	file = 'Example.png',
	format = 'thumb',
	size = '220px',
	link = 'Ajuda:Página de testes',
	caption = 'Um exemplo.'
}
-- Renderiza como [[Ficheiro:Example.png|thumb|220px|link=Ajuda:Página de testes|Um exemplo.]]

Com formato, tamanho e borda:

mFileLink.main{
	file = 'Example.png',
	format = 'frameless',
	size = '220px',
	border = true
}
-- Renderiza como [[Ficheiro:Example.png|frameless|border|220px]]

Notas

  1. do inglês string
  2. do inglês P.D.F.portable document format
  3. do inglês Ht.M.L.hypertext markup language

-- This module provides a library for formatting file wikilinks.

local yesno = require('Module:Yesno')
local checkType = require('libraryUtil').checkType

local p = {}

function p._main(args)
	checkType('_main', 1, args, 'table')

	-- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our
	-- own function to get the right error level.
	local function checkArg(key, val, level)
		if type(val) ~= 'string' then
			error(string.format(
				"erro de tipo em parâmetro '%s' de '_main' (string esperado, recebido(a) %s)",
				key, type(val)
			), level)
		end
	end

	local ret = {}

	-- Adds a positional parameter to the 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

	-- Adds a named parameter to the buffer. We assume that the parameter name
	-- is the same as the argument key.
	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

	-- Filename
	args.file = args.file or args.ficheiro or args.arquivo
	checkArg('file', args.file, 3)
	ret[#ret + 1] = 'Ficheiro:' .. args.file

	-- Format
	args.format = args.format or args.formato
	args.formatfile = args.formatfile or args.ficheiroformato or args.arquivoformato
	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

	-- Border
	if yesno(args.border or args.borda) then
		ret[#ret + 1] = 'border'
	end

	addPositional('location')
	addPositional('localização')
	addPositional('alignment')
	addPositional('alinhamento')
	addPositional('size')
	addPositional('tamanho')
	addNamed('upright')
	addNamed('vertical')
	addNamed('link')
	addNamed('ligação')
	addNamed('alt')
	addNamed('page')
	addNamed('página')
	addNamed('class')
	addNamed('classe')
	addNamed('lang')
	addNamed('líng')
	addNamed('ling')
	addNamed('língua')
	addNamed('idioma')
	addNamed('start')
	addNamed('iniciar')
	addNamed('começar')
	addNamed('início')
	addNamed('começo')
	addNamed('end')
	addNamed('fim')
	addNamed('finalizar')
	addNamed('terminar')
	addNamed('thumbtime')
	addNamed('tempominiatura')
	addPositional('caption')
	addPositional('legenda')

	return string.format('[[%s]]', table.concat(ret, '|'))
end

function p.main(frame)
	local origArgs = require('Módulo:Arguments').getArgs(frame, {
		wrappers = 'Predefinição:Link de arquivo'
	})
	if not origArgs.file and not origArgs.ficheiro and not origArgs.arquivo then
		error("Parâmetro 'file', 'ficheiro' ou 'arquivo' em falta em [[Predefinição:Link de arquivo]]", 0)
	end

	-- Copy the arguments that were passed to a new table to avoid looking up
	-- every possible parameter in the frame object.
	local args = {}
	for k, v in pairs(origArgs) do
		-- Make _BLANK a special argument to add a blank parameter. For use in
		-- conditional templates etc. it is useful for blank arguments to be
		-- ignored, but we still need a way to specify them so that we can do
		-- things like [[File:Example.png|link=]].
		if v == '_BLANK' or v == '_EMBRANCO' then
			v = ''
		end
		args[k] = v
	end
	return p._main(args)
end

return p