Espressione

Da Opera Wiki.

(Differenze fra le revisioni)
Riga 1: Riga 1:
-
{{WIP}}
+
= Espressioni =
-
{{BR}}
+
-
Le espressioni consentono la creazione di regole complesse per la verifica delle condizioni nelle autoselezioni.
+
Le '''espressioni''' consentono di definire regole complesse per la verifica delle condizioni nelle autoselezioni.
-
Una espressione può contenere ''numeri'', ''variabili'' e ''funzioni''.
+
Un’espressione può contenere **numeri**, **variabili** e **funzioni**, che vengono valutati per stabilire se una condizione è vera o falsa.
 +
== Concatenazione degli elementi ==
 +
Gli elementi possono essere combinati tra loro tramite:
 +
* l’uso di funzioni nidificate;
 +
* l’uso di operatori logici per unire più condizioni.
 +
Gli operatori disponibili sono:
 +
* <code>&</code> → AND logico (entrambe le condizioni devono essere vere); 
 +
* <code>|</code> → OR logico (almeno una condizione deve essere vera). 
-
Funzioni-struttura utilizzabili nelle condizioni:
+
Esempi:
 +
* <code>profile(A) & option(OPZ1)</code> → vero solo se il profilo è ''A'' **e** l’opzione ''OPZ1'' è attiva. 
 +
* <code>struct-contains(ACC123) | struct-contains(ACC456)</code> → vero se la struttura contiene l’accessorio ''ACC123'' **oppure** ''ACC456''. 
 +
* <code>option(OPZ1) & (side-contains(PF100) | side-contains(PF200))</code> → l’opzione ''OPZ1'' deve essere attiva e, allo stesso tempo, il lato deve contenere ''PF100'' o ''PF200''. 
 +
== Funzioni disponibili ==
 +
Sono previste varie '''funzioni-struttura''', utili per controllare la presenza o lo stato di profili, accessori e opzioni:
-
*'''profile(...)''': verifica se ci si trova in uno specifico profilo
+
* <code>profile(...)</code>: verifica se ci si trova in uno specifico profilo
 +
* <code>typology-option(...)</code>: controlla se un’opzione è attiva in una qualunque struttura della tipologia. 
 +
* <code>option(...)</code>: controlla se un’opzione è attiva nella struttura corrente. 
 +
* <code>frameside-contains(...)</code>: verifica se un profilo/accessorio è presente in un lato del telaio o dell’anta. 
 +
* <code>frame-contains(...)</code>: verifica la presenza di un profilo/accessorio nel telaio o nell’anta (qualsiasi lato). 
 +
* <code>side-contains(...)</code>: come sopra, ma riferito a un lato specifico (1 = sx, 2 = dx, 3 = sup, 4 = inf). 
 +
* <code>struct-contains(...)</code>: verifica nella struttura corrente. 
 +
* <code>typology-contains(...)</code>: ricerca estesa a tutte le strutture della tipologia. 
-
*'''typology-option(...)''': verifica se una specifica opzione è attiva in una qualunque delle strutture della tipologia
+
Esempi:
 +
* <code>profile(NOME_PROFILO)</code> 
 +
* <code>struct-contains(NOME_PROFILO_O_ACCESSORIO)</code> 
 +
* <code>option(NOME_OPZIONE)</code> 
-
*'''option(...)''': verifica se una specifica opzione è attiv nella struttura corrente
+
== Ricerca avanzata ==
-
*'''frameside-contains(...)''': verifica se un profilo o un accessorio sono presenti nel lato del telaio o dell'anta corrente
+
Le espressioni supportano due tipi di ricerca evoluta:
-
*'''frame-contains(...)''': verifica se un profilo o un accessorio sono presenti nel telaio o nell'anta corrente (qualsiasi lato)
+
=== Ricerca regolare ===
 +
Se il parametro inizia con <code>r=</code>, viene interpretato come una ''regular expression''.
-
*'''side-contains(...)''': verifica se un profilo o un accessorio sono presenti nel lato corrente controllando sia anta che telaio
+
Esempio: 
-
**è possibile aggiungere il lato da verificare, es. side2-contains(...) controlla se un profilo o un accessorio sono presenti nel lato destro (1=sx; 2=dx; 3=sup; 4=inf)
+
<code>side-contains(r=P.*2)</code> 
 +
→ ricerca un profilo/accessorio nel lato corrente il cui nome contiene la lettera ''P'' seguita dal numero ''2'', con qualunque carattere in mezzo.
-
*'''struct-contains(...)''': verifica se un profilo o un accessorio sono presenti nella struttura corrente
+
=== Ricerca per parole chiave ===
 +
Se il parametro è <code>keyword(kw)</code>, viene ricercata la parola chiave ''kw'' nelle parole chiave dei profili, accessori o opzioni. 
-
*'''typology-contains(...)''': verifica se un profilo o un accessorio sono presenti in una qualunque delle strutture della tipologia
+
Esempio: 
-
**Es. se vuoi sapere se la condizione è applicata ad uno '''specifico profilo''', nel parametro della funzione '''(...)''' si mette il codice dell'articolo (profilo e/o accessorio o opzione) che si vuole verificare.
+
<code>frameside-contains(keyword(KITAR))</code> 
 +
verifica se, nel lato corrente, il telaio o i suoi accessori hanno la parola chiave ''KITAR''.   
-
*'''profile(nome_profilo)'''
+
Le ricerche regolari e per parole chiave possono anche essere '''annidate'''
-
oppure se vuoi sapere se la struttura contiene uno '''specifico profilo o accessorio''':
+
Esempio:
-
 
+
<code>typology-contains(keyword(r=^FR))</code> 
-
*'''struct-contains(nome_del_profilo_o_dell_accessorio)'''
+
ricerca in tutta la tipologia profili o accessori in cui almeno una parola chiave inizia per ''FR''.
-
 
+
-
per testare se un''''opzione''' è attiva nella struttura corrente:
+
-
 
+
-
*'''option(nome_opzione)'''
+
-
 
+
-
e cosi via.
+
-
 
+
-
La nuova modifica permette due nuovi tipi di ricerca.
+
-
 
+
-
''Ricerca regolare'': se il parametro inizia per '''r=''' allora viene fatta una ricerca regolare (https://en.wikipedia.org/wiki/Regular_expression).
+
-
 
+
-
Es: '''side-contains(r=P.*2)'''viene ricercato nel lato corrente un profilo o un accessorio iu cui nome contenga la lettera P e successivamente la cifra 2 dopo un numero qualsiasi di caratteri
+
-
   
+
-
'''Ricerca per parole chiave''': se il parametro è un'altra funzione chiamata '''keyword(kw)''' allora viene ricercata una particolare parola chiave '''kw''' nelle parole chiave dei profili e/o degli accessori o delle opzioni a seconda della funzione chiamata. Per questo sono state attivate le parole chiave nell'archivio opzioni che non esistevano.
+
-
 
+
-
Es: '''frameside-contains(keyword(KITAR))''' viene ricercata nelle parole chiave del profilo telaio del lato corrente e dei suoi accessori la parola chiave '''KITAR'''
+
-
 
+
-
La ricerca regolare e per keyword possono essere annidate.
+
-
 
+
-
Es.: '''typology-contains(keyword(r=^FR))''' ricerca in tutta la tipologia profili o accessori in cui una delle parole chiavi inizia per '''FR'''
+

Versione delle 09:30, 26 ago 2025

Indice

Espressioni

Le espressioni consentono di definire regole complesse per la verifica delle condizioni nelle autoselezioni. Un’espressione può contenere **numeri**, **variabili** e **funzioni**, che vengono valutati per stabilire se una condizione è vera o falsa.

Concatenazione degli elementi

Gli elementi possono essere combinati tra loro tramite:

  • l’uso di funzioni nidificate;
  • l’uso di operatori logici per unire più condizioni.

Gli operatori disponibili sono:

  • & → AND logico (entrambe le condizioni devono essere vere);
  • | → OR logico (almeno una condizione deve essere vera).

Esempi:

  • profile(A) & option(OPZ1) → vero solo se il profilo è A **e** l’opzione OPZ1 è attiva.
  • struct-contains(ACC123) | struct-contains(ACC456) → vero se la struttura contiene l’accessorio ACC123 **oppure** ACC456.
  • option(OPZ1) & (side-contains(PF100) | side-contains(PF200)) → l’opzione OPZ1 deve essere attiva e, allo stesso tempo, il lato deve contenere PF100 o PF200.

Funzioni disponibili

Sono previste varie funzioni-struttura, utili per controllare la presenza o lo stato di profili, accessori e opzioni:

  • profile(...): verifica se ci si trova in uno specifico profilo.
  • typology-option(...): controlla se un’opzione è attiva in una qualunque struttura della tipologia.
  • option(...): controlla se un’opzione è attiva nella struttura corrente.
  • frameside-contains(...): verifica se un profilo/accessorio è presente in un lato del telaio o dell’anta.
  • frame-contains(...): verifica la presenza di un profilo/accessorio nel telaio o nell’anta (qualsiasi lato).
  • side-contains(...): come sopra, ma riferito a un lato specifico (1 = sx, 2 = dx, 3 = sup, 4 = inf).
  • struct-contains(...): verifica nella struttura corrente.
  • typology-contains(...): ricerca estesa a tutte le strutture della tipologia.

Esempi:

  • profile(NOME_PROFILO)
  • struct-contains(NOME_PROFILO_O_ACCESSORIO)
  • option(NOME_OPZIONE)

Ricerca avanzata

Le espressioni supportano due tipi di ricerca evoluta:

Ricerca regolare

Se il parametro inizia con r=, viene interpretato come una regular expression.

Esempio: side-contains(r=P.*2) → ricerca un profilo/accessorio nel lato corrente il cui nome contiene la lettera P seguita dal numero 2, con qualunque carattere in mezzo.

Ricerca per parole chiave

Se il parametro è keyword(kw), viene ricercata la parola chiave kw nelle parole chiave dei profili, accessori o opzioni.

Esempio: frameside-contains(keyword(KITAR)) → verifica se, nel lato corrente, il telaio o i suoi accessori hanno la parola chiave KITAR.

Le ricerche regolari e per parole chiave possono anche essere annidate.

Esempio: typology-contains(keyword(r=^FR)) → ricerca in tutta la tipologia profili o accessori in cui almeno una parola chiave inizia per FR.

Strumenti personali