Abrir menu principal

Mudanças

Módulo:Yesno/doc

4 291 bytes adicionados, 00h56min de 15 de dezembro de 2019
Criação da Documentação do Módulo Yesno.
<includeonly>{{Alto uso|30000}}</includeonly>
<!-- Categorias no final desta página e links para outros idiomas no Wikidata -->

Este módulo fornece uma interface consistente para o processamento de strings de entrada booleanas ou de tipo booleano. É um módulo para ser usado por outros módulos, não independentemente. Enquanto Lua permite os valores booleanos <code>true</code> e <code>false</code>, predefinições em código wiki só podem expressar valores booleanos através de strings tais como "sim", "não", etc. Este módulo processa esse tipo de strings e converte-as em entradas booleanas para que Lua possa processá-las. Ele também retorna valores <code>nil</code> como <code>nil</code>, para permitir que haja distinção entre <code>nil</code> e <code>false</code>. O módulo também aceita outras estruturas em Lua como entrada, por exemplo booleanos, números, tabelas, e funções. É possível especificar um valor <code>padrão</code> a ser retornado em todos os casos.

== Sintaxe ==
<source lang="lua">yesno(valor, padrão)</source>

<code>valor</code> é o valor a ser testado. Entradas booleanas ou de tipo booleano (ver abaixo) são sempre avaliadas como <code>true</code> ou <code>false</code>, e valores <code>nil</code> sempre são avaliados como <code>nil</code>. Outros valores são avaliados como <code>padrão</code>.

== Uso ==
Primeiro, carrega-se o módulo. Note que só pode ser carregado a partir de outros módulos feitos em Lua, não de páginas wiki em outros domínios, como predefinições, domínio principal e/ou páginas de usuário; Para essas, a predefinição {{tl|yesno}} pode servir como substitutivo. Para carregar o módulo, utiliza-se a seguinte linha de comando:

<source lang="lua">local yesno = require('Module:Yesno')</source>

Alguns valores de entrada sempre retornam <code>true</code>, e alguns sempre retornam <code>false</code>. Valores <code>nil</code> sempre retornam <code>nil</code>.

<source lang="lua">
-- Estes sempre retornam true:
yesno('sim')
yesno('verdadeiro')
yesno('yes')
yesno('y')
yesno('true')
yesno('1')
yesno(1)
yesno(true)

-- Estes sempre retornam false:
yesno('não')
yesno('falso')
yesno('no')
yesno('n')
yesno('false')
yesno('0')
yesno(0)
yesno(false)

-- Valores nil sempre retornam nil:
yesno(nil)
</source>

Valores string são convertidos para letras minúsculas antes de serem testados:

<source lang="lua">
-- Estes sempre retornam true:
yesno('Sim')
yesno('SIM')
yesno('sIm')
yesno('vErDaDeIrO')

-- Estes sempre retornam false:
yesno('Não')
yesno('NÃO')
yesno('nÃO')
yesno('fALsO')
</source>

É possível especificar um valor padrão para o caso de yesno receber como entrada algo que não esteja listado acima. Se não for fornecido um valor padrão, o módulo retornará <code>nil</code> para tais entradas.

<source lang="lua">
-- Estes retornam nil:
yesno('teste')
yesno({})
yesno(5)
yesno(function() return 'Esta é uma função.' end)

-- Estes retornam true:
yesno('teste', true)
yesno({}, true)
yesno(5, true)
yesno(function() return 'Esta é uma função.' end, true)

-- Estes retornam "padrão":
yesno('teste', 'padrão')
yesno({}, 'padrão')
yesno(5, 'padrão')
yesno(function() return 'Esta é uma função.' end, 'padrão')
</source>

Note que a string vazia também funciona deste modo:
<source lang="lua">
yesno('') -- Retorna nil.
yesno('', true) -- Retorna true.
yesno('', 'padrão') -- Retorna "padrão".
</source>

Embora a string vazia geralmente seja avaliada como false em código wiki, ela é avaliada como true em Lua. Este módulo prefere o comportamento em Lua em vez do comportamento em código wiki. Se para o seu módulo for importante tratar strings vazias como false, você precisará remover os argumentos vazios em um estágio anterior do processamento.

== Testes unitários ==
Abaixo estão listados [[Teste de unidade|testes unitários]] deste módulo, de modo a garantir o funcionamento do módulo em todos os casos que ele se propõe a cobrir e que ao ser atualizado ou modificado, continue a garantir seu funcionamento integral.

{{#invoke:Yesno/Testes unitários|run_tests}}

<includeonly>
<!-- Categorias aqui e links para outros idiomas no Wikidata -->
{{#ifeq:{{SUBPAGENAME}}|Testes||
[[Categoria:!Metamódulos Lua]]
}}
</includeonly>