Última modificação: 28 de agosto de 2025
Para expandir a lógica e a funcionalidade dos seus modelos, o HubL aceita vários operadores-chave e testes de expressão. Os operadores permitem executar funções matemáticas, fazer comparações, complicar a lógica do modelo e alterar a renderização da marcação. Além disso, este artigo contém uma lista abrangente de testes de expressão que podem ser usados no HubL.
Operadores
Os operadores são símbolos que dizem ao compilador HubL para executar várias operações que resultam na saída final. Operadores são colocados entre operandos para relacionar os dois valores, seja para executar funções matemáticas, fazer comparações ou implementar expressões booleanas.
Matemática
Os operadores matemáticos padrão podem ser usados para calcular valores no contexto de um modelo.Símbolo | Descrição |
---|---|
+ | Soma dois objetos, geralmente valores numéricos. Para concatenar strings ou listas, você deve usar o operador~ em vez de. |
- | Subtrai um número de outro. |
/ | Divide números. |
% | Retorna o restante da divisão de números |
// | Divida dois números e retorne o resultado inteiro truncado. Por exemplo, {{ 20 // 7 }} é 2 . |
* | Multiplica números. |
** | Eleve o operando esquerdo ao poder do operando direito. |
Comparação
Os operadores de comparação podem ser usados para avaliar os valores da lógica do modelo. Você pode ver alguns exemplos de operadores de comparação sendo usados nas instruções se.Símbolo | encurtado | Descrição |
---|---|---|
== | eq | Igual a. Avalia como verdadeiro se os dois objetos têm valores iguais. |
!= | ne | Não é igual a. Avalia como verdadeiro se os dois objetos não forem iguais. |
> | gt | Maior que. Avalia como verdadeiro se o valor do operando esquerdo for maior que o do operando direito. |
>= | gte | Maior ou igual a. Avalia como verdadeiro se o operando esquerdo for maior ou igual ao operando direito. |
< | It | Menor que. Avalia como verdadeiro se o operando esquerdo for menor que o operando direito. |
<= | lte | Menor ou igual a. Avalia como verdadeiro se o operando esquerdo for menor ou igual ao operando direito. |
A versão abreviada dos operadores de comparação pode ser usada em filtros HubL que envolvem testar uma expressão como
|selectattr()
.Lógico
Operadores lógicos permitem implementar expressões booleanas, bem como combinar múltiplas expressões em instruções únicas.Símbolo | Descrição |
---|---|
and | Retornos true se tanto o operando esquerdo quanto o direito forem verdadeiros. Caso contrário, retorna false . Este operador não se comporta como o operador and em Python ou o operador && em JavaScript. Saiba mais sobre o uso de operadores and abaixo. |
or | Retorna o primeiro operando se for verdadeiro. Caso contrário, retorna o segundo operando. Este operador é equivalente a or em Python e || em JavaScript. Saiba mais sobre o uso de operadores or abaixo. |
is | Une dois operandos para uma declaração afirmativa. |
not | Nega uma afirmação, em conjunto com is . |
(expr) | Agrupa uma expressão para a ordem de operações. Por exemplo, (10 - 2) * variable . |
? | O operador ternário pode ser usado para escrever rapidamente lógica condicional. Aceita 3 argumentos: expressão, condição verdadeira, condição falsa. Avalia uma expressão e retorna a condição correspondente. |
or
se comporta como o operador or
em Python e o operador ||
em JavaScript. Ele retornará o primeiro operando se a expressão for avaliada como verdadeira, caso contrário, retornará o segundo operando. Um caso de uso comum para o operador or
está definindo um valor de fallback quando um valor de variável não está definido.
and
se comporta de forma diferente do operador and
em Python e o operador &&
em JavaScript. No HubL, and
sempre retornará um valor booleano: quando a expressão for avaliada como verdadeira, true
é retornado, caso contrário retornará false
. Os operadores Python e JavaScript, por outro lado, retornarão um valor de operando com base na avaliação da instrução como verdadeira ou falsa.
[]
) e dicionários vazios ({}
) são considerados falsos. Isso é equivalente ao comportamento em Python, mas diferente do JavaScript, onde []
e {}
são verdadeiros.
Outros operadores do HubL
Veja abaixo outros operadores do HubL importantes que podem ser usados para executar várias tarefas.Símbolo | Descrição |
---|---|
in | Verifica se um valor está em uma sequência. |
is | Executa um teste de expressão. |
| | Aplica um filtro. |
~ | Concatena valores. |
Testes de expressão
Os testes de expressão são várias condições booleanas que podem ser avaliadas por operadores lógicos.boolean
Testa se o objeto é booleano (em sentido estrito, não em sua capacidade de ser avaliado como uma expressão verdadeira).containing
Testa se uma variável de lista tem um valor.containingall
Testa se uma variável de lista contém todos os valores de outra lista.defined
Testa se uma variável está definida dentro do contexto do modelo. Embora você possa usar esse teste de expressão, escrever uma instrução if sem operador será o padrão para verificar se a variável está definida ou não. No exemplo abaixo, o parâmetro de cor de um módulo de cor é testado. Se o parâmetro de cor não contiver um valor, o modelo renderizará uma cor de fundo preta padrão. Se for definido, ele renderizará a cor de fundo definida pelo usuário.divisibleby
Testa se um objeto é divisível por outro número. Por exemplo, abaixo, é criado um loop for que itera através de uma lista de tipos de animais. Cada tipo de animal é impresso em uma div, e cada 5ª div tem um estilo em linha diferente aplicado (largura:100%). Esse conceito pode ser aplicado a um blog em que uma marcação diferente é renderizada para um determinado padrão de posts. Para saber mais sobre loops e loop.index, confira este artigo.equalto
Testa se o valor de uma variável é igual a uma constante ou a outra variável. Você também pode usar o operador==
para fazer o mesmo teste.
No exemplo abaixo, a largura dos posts do blog é ajustada com base no número total de postagens no loop. O exemplo de saída pressupõe que havia 4 posts no blog.
even
Testa se uma variável numérica é um número par. O exemplo abaixo mostra um loop de listagem de blog simplificado, em que, se a iteração atual do loop for par, uma classe deeven-post
será atribuída ao div do item do post. Caso contrário, uma classe de odd-post
é atribuída.
float
Testa se uma variável numérica é um número de ponto flutuante.integer
Testa se uma variável é um inteiro.iterable
Testa se uma variável pode ser percorrida em loop. Este exemplo verifica uma variável chamadajobs
para ver se é possível iterar. Como a variável contém uma lista de empregos, o declaração if avaliaria para true
, e o loop seria executado. Se a variável contivesse um único valor, a instrução if imprimiria esse valor com marcação diferente. Saiba mais sobre loops for.
lower
Testa se uma string é minúscula. O exemplo abaixo usa uma instrução unless e um filtro inferior para garantir que uma sequência de texto inserida em um módulo de texto esteja sempre em minúsculas.mapping
Testa se um objeto é um dict (dicionário). O exemplo abaixo verifica se o objeto de contato é um dicionário.none
Testa se uma variável tem um valornull
.
number
Testa se o valor de uma variável é um número. O exemplo abaixo verifica uma variável para ver se ela é ou não uma variável e, em caso afirmativo, converte-a em milhões.odd
Testa se uma variável numérica é um número ímpar. Abaixo está o mesmo exemplo do teste de expressão inversa par descrito anteriormente.sameas
Testa se duas variáveis têm ou não o mesmo valor. O exemplo abaixo define duas variáveis e, em seguida, verifica se elas são ou não as mesmas.sequence
Semelhante ao teste iterável, esta expressão teste verifica se uma variável é uma sequência. O exemplo abaixo testa se uma variável é uma sequência e, em seguida, itera por essa sequência de gêneros musicais.string
Testa se o valor armazenado em uma variável é texto. O exemplo abaixo verifica se uma variável é uma string e, se for, aplica um filtro de título para alterar a capitalização.string_containing
Testa se uma substring fornecida está contida em outra string. Este teste de expressão é usado em conjunto com o operadoris
.
string_startingwith
Testa se uma string começa com uma string específica. É usado em conjunto com o operadoris
.
truthy
Testa se uma expressão é avaliada comoTrue
.
O exemplo abaixo usa um módulo de caixa de seleção booleana para exibir uma mensagem de alerta.
undefined
Testa se uma variável é indefinida no contexto do modelo. Este teste é diferente do teste de expressãonone
em que indefinido será true
quando a variável está presente, mas não tem valor; enquanto que nenhum será true
quando a variável tem um valor nulo.
O exemplo abaixo verifica um modelo para a existência da variável “my_var”.
upper
Testa se uma string está toda em letras maiúsculas. Abaixo está um exemplo inverso do teste de expressãolower
acima.