Módulo:Busca
Aspeto
Descrição
Faz busca no código wiki de uma página, contando as correspondências ou as utilizando pra gerar uma lista com uma determinada formatação.
Uso
contar: conta as correspondências para uma busca no código fonte de uma página.
{{#invoke:busca|contar|nome da página|texto}}
formatar: conta as correspondências para uma busca no código fonte de uma página.
{{#invoke:busca|formatar|nome da página|texto|substituição|limite=máximo}}
testar: testa se existe uma correspondência no código fonte da página, retornando "Sim" ou "Não" ou a respectiva resposta predefinida.
{{#invoke:busca|testar|nome da página|texto|sim=texto para o sim|não=texto para o não}}
Exemplos
Contar quantas linhas de tabela tem Wikinotícias:Lista de cores:
{{#invoke:busca|contar|Wikinotícias:Lista de cores| {{!}}%-}}
resulta em: 166
Verifica se a palavra "Finlândia" aparece em Participantes das edições anteriores da Eurovisão dão conselhos aos participantes deste ano, especulando quem vai ganhar:
{{#invoke:busca|testar|Participantes das edições anteriores da Eurovisão dão conselhos aos participantes deste ano, especulando quem vai ganhar|Finlândia}}resulta em: Sim
Esta documentação se encontra na subpágina Módulo:Busca/doc ( | histórico)
Por favor inclua as categorias à subpágina /doc. Subpáginas deste módulo.
Por favor inclua as categorias à subpágina /doc. Subpáginas deste módulo.
m ={}
function m.formatar(frame)
local texto = mw.title.new(frame.args[1]):getContent()
local pattern = frame.args[2]
pattern = string.gsub(pattern, '\\n', '\n')
local format = frame.args[3]
local limite = frame.args['limite'] and tonumber(frame.args['limite']) or nil
texto = mw.ustring.gsub(texto, pattern, function (...)
local r
for i,v in ipairs(arg) do
if v ~= '' then
r = string.gsub(r or format, '%%'..i, frame.args['se'..i] or arg[i])
else
r = string.gsub(r or format, '%%'..i, frame.args['não'..i] or '')
end
end
return '<~~' .. r .. '~~>'
end, limite)
texto = string.gsub(string.gsub(texto, '~~>.-^?<~~', ''), '.-<~~(.-)~~>.*', '%1')
return texto
end
function m.contar(frame)
local texto = mw.title.new(frame.args[1]):getContent()
local pattern = frame.args[2]
pattern = string.gsub(pattern, '\\n', '\n')
local gen = mw.ustring.gmatch(texto, pattern)
local count = 0
for i in gen do
count = count + 1
end
return count
end
function m.testar(frame)
local texto = mw.title.new(frame.args[1]):getContent()
local pattern = frame.args[2]
pattern = string.gsub(pattern, '\\n', '\n')
if frame.args['início'] then
local init = mw.ustring.find(texto, frame.args['início'])
if not init then
return frame.args['não'] or 'Não'
end
end
if mw.ustring.find(texto, pattern, init or 1) then
return frame.args['sim'] or 'Sim'
else
return frame.args['não'] or 'Não'
end
end
return m