[Expression] ! pour les connaisseurs!

Là tu met quand même le doigt sur un truc !

Jeedom n’impose pas une syntaxe php stricte. Ce qui rend possible :
IF $var == 1 et $var2 == 2

Sauf que et en php çà n’existe pas ! Donc il faut bien le remplacer par AND ou && pour que çà marche. Et tant que ce sera le cas, ton exemple ne fonctionnera jamais.

Si tu veux que çà marche, il faut une syntaxe strict et on ne remplace plus les et/ou par AND/OR.
Sauf que le jour ou on fait on pète la moitié des expressions de tout les jeedoms. (mais j’ai une idée, faut que j’en parle à Loic)

Comme ça le sujet concernant l’internationallisation pourras avancer en même temps :sweat_smile:.

Je suis en Jeedom anglais depuis des mois sans soucis :roll_eyes:

Ce que veux sans doute dire Bison, c’est que s’il faut traiter le ET français, il faudrait aussi traiter le UND, le Y etc
En supprimant, le ET plus besoin de faire le reste

1 « J'aime »

Ça c’est pas faux !!!

1 « J'aime »

Le et est dans une chaine de caractères délimitée par des apostrophes ou des guillemets et ne devrait pas être remplacé.
Pour moi la syntaxe des expressions dans Jeedom n’est pas assez stricte.

Ce qui veut dire ? Comment corriger ? Dans quelle fonction ?

Je pense qu’il parle de ET && AND dans un scénario par exemple

On pourrait simplifier et ne garder que && par exemple.

Je suis en train de tester justement

ce qui saute les et / ou

La syntaxe devrait être uniquement du php. Chaine de caractères délimitées. uniquement les opérateurs de php && ou AND par exemple.

1 « J'aime »

C’est ce que je dis plus haut. Mais si on fait çà, on casse au moins la moitié des jeedoms …

Qui ici est certains de ne pas avoir une seule expression avec un ET à la place d’un && ? Pas moi …

moi quasi… Je me suis farci les corrections en base il y a un moment déjà … C’est pénible (avec/sans espaces avant/après)

C’est une bonne idée cette case à cocher pour forcer une syntaxe stricte PHP !

Ainsi ça ne casse pas le code déjà en place et permettrait de bypasser les fonctions de correspondance Jeedom pour les expressions dont il est nécessaire de réutiliser la base PHP !

voilà ce qui pose soucis sur certaines strings:

$string = str_ireplace(array(' et ', ' and ', ' ou ', ' or ', ' xor '), array(' && ', ' && ', ' || ', ' || ', ' ^ '), $_string);

Dans l’absolu même si on enlève et / ou il reste and / or / xor qui peuvent poser problèmes.

Faudrai tester dans symfony si les and / or sont supportés, auquel cas on vire carrément le replace !!!

Donc nous y voilà, symfony n’aime pas les and

#[Maison][Thermostat][Order]# < 21 AND #[Maison][Météo][Temperature]# > 4 → KO

#[Maison][Thermostat][Order]# < 21 && #[Maison][Météo][Temperature]# > 4 - OK

Et je suis en symfony 5.1 !!

donc option syntaxe strice : pas de et /ou and / or !!! Et va encore dire que jeedom c’est pour les geeks. Mais après du syntaxionnel sans syntaxe faut pas rêver non plus.

Ok, ça craint :upside_down_face:.

Dans ce cas est-ce qu’une solution ne serait pas d’implémenter une fonction de réécriture de la syntaxe mais pour qu’elle transforme une écriture intuitive (ET / OU) en écriture supportée par Symfony (&& / ||) afin de remplacer la syntaxe dans le scénario ?

Un espèce d’assistant comme pour le cron ?

On aura le même problème … en automatique j’y crois pas du tout, la preuve, ce sujet

Par contre la modale de selection des commandes en scenario mets des ET OU donc çà, va falloir le changer !

IF strlen(‹ to,to ›) == 5 → Invalid expression [ == 5]

:exploding_head:

Déjà çà, çà parait beaucoup plus cohérent

phpsyntaxe