Módulo:Testes/Gkiyoshinishimoto/Yesno/doc

Este módulo fornece uma interface consistente para processar entrada de sequência[a] booleana ou de estilo booleano. Enquanto Lua permite os valores booleanos true e false, as predefinições de código wiki só podem expressar valores booleanos através de sequências[a] como "yes", "no", etc. Este módulo processa esses tipos de sequências[a] e as transforma em entrada booleana para Lua processar. Ele também retorna valores nil como nil, para permitir distinções entre nil e false. O módulo também aceita outras estruturas Lua como entrada, ou seja, booleanos, números, tabelas e funções. Se for passada uma entrada que não é reconhecida como booleana ou nil, é possível especificar um valor padrão para retornar.

Sintaxe

editar
yesno(value, default)

value é o valor a ser testado. A entrada booleana ou de estilo booleano (ver abaixo) sempre é avaliada como true ou false, e nil sempre é avaliada como nil. Outros valores são avaliados como default.

Primeiro, carregue o módulo. Observe que ele só pode ser carregado a partir de outros módulos Lua, não a partir de páginas wiki normais. Para páginas wiki normais você pode usar {{Teste/Gkiyoshinishimoto/Yesno}}.

local yesno = require('Módulo:Testes/Gkiyoshinishimoto/Yesno')

Alguns valores de entrada sempre retornam true e alguns sempre retornam false. Valores nil sempre retornam nil.

-- Estes sempre retornam true:
yesno('yes')
yesno('sim')
yesno('y')
yesno('s')
yesno('true')
yesno('verdadeiro')
yesno('t')
yesno('v')
yesno('on')
yesno('ligado')
yesno('l')
yesno('1')
yesno(1)
yesno(true)

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

-- Um valor nulo sempre retorna nil:
yesno(nil)
yesno()

Os valores de sequência[a] são convertidos em letras minúsculas antes de serem correspondidos:

-- Estes sempre retornam true:
yesno('Yes')
yesno('Sim')
yesno('YES')
yesno('SIM')
yesno('yEs')
yesno('sIm')
yesno('Y')
yesno('S')
yesno('tRuE')
yesno('vErDaDeIrO')

-- Estes sempre retornam false:
yesno('No')
yesno('Não')
yesno('NO')
yesno('NÃO')
yesno('nO')
yesno('nãO')
yesno('N')
yesno('fALsE')
yesno('fALsO')

Entrada indefinida ('foo')

editar

Você pode especificar um valor padrão se Yesno receber uma entrada diferente da listada acima. Se você não fornecer um padrão, o módulo retornará nil para essas entradas.

-- Estas retornam nil:
yesno(nil)
yesno('foo')
yesno({})
yesno(5)
yesno('')
yesno(function() return 'Esta é uma função.' end)
yesno(nil, true)
yesno(nil, 'bar')

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

-- Estas retornam "bar":
yesno('foo', 'bar')
yesno({}, 'bar')
yesno(5, 'bar')
yesno('', 'bar')
yesno(function() return 'Esta é uma função.' end, 'bar')

Embora a sequência[a] vazia geralmente seja avaliada como false em texto wiki, ela é avaliada como true em Lua. Este módulo prefere o comportamento de Lua ao comportamento de texto wiki. Se tratar a sequência[a] vazia como false for importante para o seu módulo, você precisará converter as sequências[a] vazias em um valor avaliado como false antes de passá-las para este módulo. No caso de argumentos recebidos a partir de texto wiki, isso pode ser feito usando Módulo:Arguments/Testes.

Lidando com resultados nulos

editar

Por definição:

yesno(nil)         -- Retorna nil.
yesno('foo')       -- Retorna nil.
yesno(nil, true)   -- Retorna nil.
yesno(nil, false)  -- Retorna nil.
yesno('foo', true) -- Retorna true.

Para obter os valores binários que sejam apenas true/false, use um código como:

myvariable = yesno(value or false) -- Quando o valor é nulo, o resultado é false.
myvariable = yesno(value or true)  -- Quando o valor é nulo, o resultado é true.
myvariable = yesno('foo') or false  -- Sequência (string) desconhecida retorna nulo, o resultado é false.
myvariable = yesno('foo', true) or false  -- O valor padrão (aqui: true) se aplica, o resultado é true.
  1. a b c d e f g do inglês string