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 Sintaxeyesno(valor, padrão)
UsoPrimeiro, 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 -- 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á -- 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áriosAbaixo 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.
-- Função que permite o tratamento consistente de texto wiki de entrada do tipo booleano.
-- Ela funciona similarmente à predefinição {{Yesno}}.
return function (val, default)
-- Essa wiki usa caracteres que não são "ASCII" (o "ã" do "não") para "sim", "não", etc., foi
-- preciso substituir "val:lower()" por "mw.ustring.lower(val)" na
-- linha seguinte.
val = type(val) == 'string' and mw.ustring.lower(val) or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'sim'
or val == 'y'
or val == 's'
or val == 'true'
or val == 'verdadeiro'
or val == 't'
or val == 'v'
or val == 'on'
or val == 'ligado'
or val == 'l'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'não'
or val == 'nao'
or val == 'n'
or val == 'false'
or val == 'falso'
or val == 'f'
or val == 'off'
or val == 'desligado'
or val == 'd'
or tonumber(val) == 0
then
return false
else
return default
end
end
|