Esta é a página de documentação para Módulo:Yesno
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 true
e false
, 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 nil
como nil
, para permitir que haja distinção entre nil
e false
. 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 padrão
a ser retornado em todos os casos.
Sintaxe[editar]
yesno(valor, padrão)
valor
é o valor a ser testado. Entradas booleanas ou de tipo booleano (ver abaixo) são sempre avaliadas como true
ou false
, e valores nil
sempre são avaliados como nil
. Outros valores são avaliados como padrão
.
Uso[editar]
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 {{yesno}}
pode servir como substitutivo. Para carregar o módulo, utiliza-se a seguinte linha de comando:
local yesno = require('Module:Yesno')
Alguns valores de entrada sempre retornam true
, e alguns sempre retornam false
. Valores nil
sempre retornam nil
.
-- 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)
Valores string são convertidos para letras minúsculas antes de serem testados:
-- 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')
É 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á nil
para tais entradas.
-- 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')
Note que a string vazia também funciona deste modo:
yesno('') -- Retorna nil.
yesno('', true) -- Retorna true.
yesno('', 'padrão') -- Retorna "padrão".
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[editar]
Abaixo estão listados 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.
Todos os testes passaram.
Texto | Esperado | Atual | |
---|---|---|---|
Predefinição:Sim | nil | nil | nil |
Predefinição:Sim | 'teste' | nil | nil |
Predefinição:Sim | {} | nil | nil |
Predefinição:Sim | 5 | nil | nil |
Predefinição:Sim | '5' | nil | nil |
Predefinição:Sim | function() return 'Esta é uma função.' end | nil | nil |
Predefinição:Sim | '' | nil | nil |
Texto | Esperado | Atual | |
---|---|---|---|
Predefinição:Sim | 'não' | false | false |
Predefinição:Sim | 'Não' | false | false |
Predefinição:Sim | 'NÃO' | false | false |
Predefinição:Sim | 'nÃo' | false | false |
Predefinição:Sim | 'falso' | false | false |
Predefinição:Sim | 'fAlSo' | false | false |
Predefinição:Sim | 'false' | false | false |
Predefinição:Sim | false | false | false |
Predefinição:Sim | 'f' | false | false |
Predefinição:Sim | 'no' | false | false |
Predefinição:Sim | 'n' | false | false |
Predefinição:Sim | '0' | false | false |
Predefinição:Sim | 0 | false | false |
Predefinição:Sim | 'teste' default = false |
false | false |
Predefinição:Sim | {} default = false |
false | false |
Predefinição:Sim | 5 default = false |
false | false |
Predefinição:Sim | function() return 'Esta é uma função.' end default = false |
false | false |
Predefinição:Sim | '' default=false |
false | false |
Texto | Esperado | Atual | |
---|---|---|---|
Predefinição:Sim | 'teste' default='padrão' |
padrão | padrão |
Predefinição:Sim | {} default='padrão' |
padrão | padrão |
Predefinição:Sim | 5 default='padrão' |
padrão | padrão |
Predefinição:Sim | '5' default='padrão' |
padrão | padrão |
Predefinição:Sim | function() return 'Esta é uma função.' end default='padrão' |
padrão | padrão |
Predefinição:Sim | '' default='padrão' |
padrão | padrão |
Texto | Esperado | Atual | |
---|---|---|---|
Predefinição:Sim | 'sim' | true | true |
Predefinição:Sim | 'Sim' | true | true |
Predefinição:Sim | 'SIM' | true | true |
Predefinição:Sim | 'sIm' | true | true |
Predefinição:Sim | 'verdadeiro' | true | true |
Predefinição:Sim | 'vErDaDeIrO' | true | true |
Predefinição:Sim | 'yes' | true | true |
Predefinição:Sim | 'y' | true | true |
Predefinição:Sim | 'true' | true | true |
Predefinição:Sim | true | true | true |
Predefinição:Sim | 't' | true | true |
Predefinição:Sim | '1' | true | true |
Predefinição:Sim | 1 | true | true |
Predefinição:Sim | 'teste' default = true |
true | true |
Predefinição:Sim | {} default = true |
true | true |
Predefinição:Sim | 5 default = true |
true | true |
Predefinição:Sim | function() return 'Esta é uma função.' end default = true |
true | true |
Predefinição:Sim | '' default=true |
true | true |