Espressione
Da Opera Wiki.
Riga 1: | Riga 1: | ||
- | + | = Espressioni = | |
- | + | ||
- | Le espressioni consentono | + | 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: | ||
+ | * <code>&</code> → AND logico (entrambe le condizioni devono essere vere); | ||
+ | * <code>|</code> → OR logico (almeno una condizione deve essere vera). | ||
- | + | 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: | ||
- | * | + | * <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. | ||
- | * | + | Esempi: |
+ | * <code>profile(NOME_PROFILO)</code> | ||
+ | * <code>struct-contains(NOME_PROFILO_O_ACCESSORIO)</code> | ||
+ | * <code>option(NOME_OPZIONE)</code> | ||
- | + | == Ricerca avanzata == | |
- | + | Le espressioni supportano due tipi di ricerca evoluta: | |
- | + | === Ricerca regolare === | |
+ | Se il parametro inizia con <code>r=</code>, viene interpretato come una ''regular expression''. | ||
- | + | Esempio: | |
- | + | <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. | ||
- | + | === 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. | ||
- | + | Esempio: | |
- | + | <code>frameside-contains(keyword(KITAR))</code> | |
+ | → 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: | |
- | + | <code>typology-contains(keyword(r=^FR))</code> | |
- | + | → ricerca in tutta la tipologia profili o accessori in cui almeno una parola chiave 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.