Módulo:Testes/Gkiyoshinishimoto/File link

Origem: Wikipédia, a enciclopédia livre.
Documentação do módulo[ver] [editar] [histórico] [purgar]

Erro de comando: Não existe nenhum módulo "Testes/Gkiyoshinishimoto/Lua banner". 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, consulte a documentação em mediawiki.org.

Uso a partir de texto wiki[editar código-fonte]

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

Uso a partir de Lua[editar código-fonte]

Primeiro, você precisa importar o módulo.

local mFileLink = require('Módulo:Testes/Gkiyoshinishimoto/File link')

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 verdadeiro por Módulo:Testes/Gkiyoshinishimoto/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[b] 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 os do 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 linguagem 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[editar código-fonte]

Com o arquivo somente:

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

Com as 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[editar código-fonte]

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

-- Este módulo fornece uma biblioteca para formatação de ligações wiki ('wikilinks') de arquivos.

local yesno = require('Módulo:Testes/Gkiyoshinishimoto/Yesno')
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:Testes/Gkiyoshinishimoto/Arguments').getArgs(frame, {
		wrappers = 'Predefinição:Teste/Gkiyoshinishimoto/File link'
	})
	if not origArgs.file then
		error("parâmetro 'file' a partir de [[Predefinição:Teste/Gkiyoshinishimoto/File link]] 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