Dernière modification : 22 août 2025
Afin d’étendre la logique et la fonctionnalité de vos modèles, HubL prend en charge plusieurs opérateurs et tests d’expression clés. Les opérateurs vous permettent d’exécuter des fonctions mathématiques, d’effectuer des comparaisons, de compliquer la logique des modèles et de modifier la restitution du balisage. En outre, cet article contient une liste complète des tests d’expression qui peuvent être utilisés dans HubL.
Opérateurs
Les opérateurs sont des symboles qui indiquent au compilateur HubL d’exécuter diverses opérations qui aboutissent à la sortie finale. Les opérateurs sont placés entre opérandes afin de relier les deux valeurs, que ce soit pour exécuter des fonctions mathématiques, effectuer des comparaisons ou implémenter des expressions booléennes.
Mathématiques
Les opérateurs mathématiques standard peuvent être utilisés pour calculer des valeurs dans le contexte d’un modèle.Symbole | Description |
---|---|
+ | Ajoute deux objets, généralement des valeurs numériques. Pour concaténer des chaînes ou des listes, vous devez utiliser l’opérateur~ à la place. |
- | Soustrait un nombre d’un autre. |
/ | Divise des nombres. |
% | Renvoie le reste de la division de nombres. |
// | Divise deux nombres et renvoie le résultat entier tronqué. Par exemple, {{ 20 // 7 }} ou 2 . |
* | Multiplie des nombres. |
** | Élève l’opérande gauche à la puissance de l’opérande droit |
Comparaison
Les opérateurs de comparaison peuvent être utilisés pour évaluer les valeurs pour la logique de modèle. Vous pouvez consulter quelques exemples d’utilisation d’opérateurs de comparaison dans les fonctions if.Symbole | sténographie | Description |
---|---|---|
== | eq | Égal à. Est défini sur true si les deux objets ont des valeurs égales. |
!= | ne | N’est pas égal à. Est défini sur true si les deux objets ne sont pas égaux. |
> | gt | Est supérieur à. Est défini sur true si la valeur de l’opérande gauche est supérieure à l’opérande droit. |
>= | gte | Est supérieur ou égal à. Est défini sur true si l’opérande gauche est supérieur ou égal à l’opérande droit. |
< | lt | Inférieur à. Est défini sur true si l’opérande gauche est inférieur à l’opérande droit. |
<= | lte | Est inférieur ou égal à. Est défini sur true si l’opérande gauche est inférieur ou égal à l’opérande droit. |
La version abrégée des opérateurs de comparaison est utilisable dans les filtres HubL qui impliquent de tester une expression comme
|selectattr()
.Logique
Les opérateurs logiques vous permettent d’implémenter des expressions booléennes ainsi que de combiner plusieurs expressions en instructions conditionnelles uniques.Symbole | Description |
---|---|
and | Renvoie true si l’opérande gauche et l’opérande droit sont exacts. Dans le cas contraire, renvoie false . Cet opérateur ne se comporte pas comme l’opérateur and en Python ou l’opérateur && en JavaScript. Découvrez-en davantage sur l’utilisation des opérateurs and ci-dessous. |
or | Renvoie le premier opérande s’il est exact. Sinon, renvoie le deuxième opérande. Cet opérateur est équivalent à or en Python et JavaScript|| Découvrez-en davantage sur l’utilisation des opérateurs or ci-dessous. |
is | Associe deux opérandes pour un énoncé affirmatif. |
not | Invalide une instruction conditionnelle, en conjonction avec is . |
(expr) | Regroupe une expression conditionnelle pour l’ordre des opérations. Par exemple : (10 - 2) * variable . |
? | L’opérateur ternaire peut être utilisé pour écrire rapidement une logique conditionnelle. Il accepte 3 arguments (expression, condition true, condition false). Il évalue une expression et renvoie la condition correspondante. |
or
se comporte comme l’opérateur or
en Python et l’opérateur ||
en JavaScript. Il renverra le premier opérande si l’expression conditionnelle est définie comme true, sinon il renverra le deuxième opérande. Un cas d’utilisation courant de l’opérateur or
consiste à définir une valeur de secours lorsqu’une valeur de variable n’est pas définie.
and
se comporte différemment de l’opérateur and
en Python et de l’opérateur &&
en JavaScript. Dans HubL, and
renvoie toujours une valeur booléenne : lorsque l’expression est évaluée comme true, true
est renvoyée, sinon elle renvoie false
. Les opérateurs Python et JavaScript, quant à eux, renverront une valeur d’opérande selon que l’instruction est définie sur true ou false.
[]
) et les dictionnaires vides ({}
) sont considérés comme faux. C’est équivalent au comportement de Python, mais différent de JavaScript, où []
et {}
sont exacts.
Autres opérateurs HubL
Vous trouverez ci-dessous d’autres opérateurs HubL importants qui peuvent être utilisés pour effectuer diverses tâches.Symbole | Description |
---|---|
in | Vérifie si une valeur se trouve dans une séquence. |
is | Effectue un test d’expression. |
| | Applique un filtre. |
~ | Concatène les valeurs. |
Tests d’expression
Les tests d’expression sont diverses conditions booléennes qui peuvent être évaluées à l’aide d’opérateurs logiques.boolean
Vérifie si l’objet est booléen (au sens strict, pas dans sa capacité d’évaluation pour une expression véridique).containing
Vérifie si une variable de liste contient une valeur.containingall
Vérifie si une variable de liste contient toutes les valeurs d’une autre liste.defined
Vérifie si une variable est définie dans le contexte du modèle. Bien que vous puissiez utiliser ce test d’expression, l’écriture d’une fonction if sans aucun opérateur aura pour effet de vérifier par défaut si la variable est définie ou non. Dans l’exemple ci-dessous, le paramètre color d’un module de couleur est testé. Si le paramètre color n’avait pas de valeur, le modèle afficherait une couleur de fond noire par défaut. S’il est défini, la couleur d’arrière-plan définie par l’utilisateur sera restituée.divisibleby
Vérifie si un objet est divisible par un autre nombre. Par exemple, ci-dessous, une boucle for est créée pour parcourir une liste de types d’animaux. Chaque type d’animal est imprimé dans une division et un style en ligne différent est appliqué toutes les 5 divisions (largeur :100 %). Ce concept pourrait être appliqué à un blog où un balisage différent est restitué pour un certain modèle d’article. Pour en savoir plus sur les boucles for et loop.index, consultez cet article.equalto
Vérifie si la valeur d’une variable est égale à une constante ou à une autre variable. Vous pouvez également utiliser l’opérateur==
pour effectuer le même test.
Dans l’exemple ci-dessous, la largeur des articles du blog est ajustée en fonction du nombre total d’articles dans la boucle. L’exemple de sortie suppose qu’il y a 4 articles dans le blog.
even
Vérifie si une variable numérique est un nombre pair. L’exemple ci-dessous montre une boucle simplifiée d’énumération de blog, où si l’itération actuelle de la boucle est paire, une classeeven-post
est attribuée à la division d’élément d’article. Autrement, une classe odd-post
est attribuée.
float
Vérifie si une variable numérique est un nombre à virgule flottante.integer
Vérifie si une variable est un nombre entier.iterable
Vérifie si une variable peut être parcourue en boucle. Cet exemple vérifie une variable appeléejobs
pour voir si elle peut être parcourue par itération. Comme la variable contient une liste de tâches, la fonction if est définie sur true
et la boucle s’exécute. Si la variable avait contenu une seule valeur, la fonction if aurait imprimé cette valeur avec un balisage différent à la place. Découvrez-en davantage sur les boucles for.
lower
Vérifie si une chaîne est en minuscules. L’exemple ci-dessous utilise une fonction unless et un filtre pour vérifier qu’une chaîne de texte saisie dans un module de texte est toujours en minuscules.mapping
Vérifie si un objet est un dictionnaire L’exemple ci-dessous vérifie si l’objet de contact est un dictionnaire.none
Vérifie si une variable a une valeurnull
.
number
Vérifie si la valeur d’une variable est un nombre. L’exemple ci-dessous vérifie si une variable est ou non une variable et, si tel est le cas, la convertit en millions.odd
Vérifie si une variable numérique est un nombre impair. Vous trouverez ci-dessous le même exemple que le test d’expression inverse even décrit précédemment.sameas
Vérifie si deux variables ont ou non la même valeur. L’exemple ci-dessous définit deux variables et vérifie ensuite si elles sont identiques ou non.sequence
Semblable au test iterable, ce test d’expression vérifie si une variable est une séquence. L’exemple ci-dessous vérifie si une variable est une séquence, puis parcourt cette séquence de genres musicaux.chaîne
Vérifie si la valeur stockée dans une variable est du texte. L’exemple ci-dessous vérifie si une variable est une chaîne de caractères et, si tel est le cas, applique un filtre de titre pour modifier la capitalisation.string_containing
Vérifie si une sous-chaîne fournie est contenue dans une autre chaîne. Ce test d’expression est utilisé en conjonction avec l’opérateuris
.
string_startingwith
Vérifie si une chaîne commence par une chaîne particulière. Il est utilisé en conjonction avec l’opérateuris
.
truthy
Vérifie si une expression est égale àTrue
.
L’exemple ci-dessous utilise un module de case à cocher booléenne pour afficher un message d’alerte.
undefined
Vérifie si une variable est indéfinie dans le contexte du modèle. Ce test est différent du test d’expressionnone
, dans la mesure où le test undefined est défini sur true
lorsque la variable est présente mais n’a pas de valeur, alors que none est défini sur true
lorsque la variable a une valeur nulle.
L’exemple ci-dessous vérifie l’existence de la variable “my_var” dans un modèle.
upper
Vérifie si une chaîne est entièrement en majuscules. Vous trouverez ci-dessous un exemple inverse du test d’expressionlower
ci-dessus.