Módulo:Busca/doc
Esta é uma subpágina de documentação para o Módulo:Busca. Ela contém informações sobre o seu uso, categorias, bem como todo o conteúdo que não faz parte do módulo original. |
Descrição
[editar código-fonte]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
[editar código-fonte]contar: conta as correspondências para uma busca no código fonte de uma página.
- {{#invoke:busca|contar|nome da página|Lua pattern}}
formatar: conta as correspondências para uma busca no código fonte de uma página.
- {{#invoke:busca|formatar|nome da página|Lua pattern|Lua pattern de substituição}}
- {{#invoke:busca|formatar|nome da página|Lua pattern|Lua pattern de 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|Lua pattern}}
- {{#invoke:busca|testar|nome da página|Lua pattern|sim=texto para o sim|não=texto para o não}}
Lua patterns
[editar código-fonte]Lua patterns são similares às expressões regulares, mas com algumas diferenças:
- Não tem o "|" (ou).
- Não tem o "{x,y}" (quantificador finito).
- Não tem o "\b" (limítrofe de palavra).
- Não tem "(?...)" (grupos especiais).
- O "?" (opcional) não funciona em grupos, apenas em caracteres.
- O caractere de escape é "%", e não "\".
- O "-" é equivalente ao "*?" (repete o caractere o mínimo possível), e "+?" é escrito por exemplo como "aa-" ("a+?" em regex).
Essas são as diferenças mais notáveis, para mais detalhes veja mw:Extension:Scribunto/Lua reference manual#Patterns.
Limitações específicas dos módulos no MediaWiki:
- Todas quebras de linha e todos espaços no começo e fim dos argumentos são contados como parte do pattern.
- É preciso utilizar {{!}} e {{=}} para escapar "|" e "=", da mesma forma que é feito dentro de um #switch.
- Os módulos são processados depois das predefinições e Parser Functions, devido a isso não é possível fazer um #ifexpr ou outra condição que dependa do resultado de um módulo, e as predefinições retornadas por módulos não são expandidas.
- Obs: o contrário funciona normalmente, ou seja, predefinições e Parser Functions podem ser usados para gerar os argumentos passados para os módulos.
Exemplos
[editar código-fonte]Contar quantas linhas de tabela tem o Tabela de conversão de unidades:
{{#invoke:busca|contar|Tabela de conversão de unidades| {{!}}%-}}
resulta em: 78
Lista as seções do artigo Lua (linguagem de programação) e as primeiras palavras de cada seção:
{{#invoke:busca|formatar|Lua (linguagem de programação)| {{=}}{{=}} *([^{{=}}]-) *{{=}}{{=}} (%S+ %S+ %S+ %S+ %S+ %S+ %S+)| * '''%1:''' %2...}}
resulta em:
- História: Lua foi criada em 1993 por [[Roberto...
- Características: Lua é normalmente descrita como uma linguagem...
- A Linguagem: Esta seção descreve o vocabulário, aspectos sintáticos...
- Sintaxe e exemplos: O Programa Olá Mundo pode ser escrito...
- Tabelas: As tabelas são as estruturas de dados...
- Projetos que utilizam Lua: Em 2013, a Wikimedia Foundation começou a...
- Bibliografia: * {{citar livro|autor=Ierusalimschy, Roberto; Figueiredo, Luiz Henrique...