CEL (Content Expression Language)
RICOH ProcessDirector CEL (Content Expression Language) consente di definire espressioni che specificano
il contenuto e il posizionamento dei miglioramenti (codici a barre, testo e aree nascoste)
nei documenti nei file AFP. Se si dispone della funzione Insertore, CEL consente di
definire espressioni nei file delle regole dell'insertore per la scrittura di file
di controllo dell'insertore e di analizzare e interpretare i file dei risultati dell'insertore.
Operatori
In questa tabella viene mostrato l'ordine di precedenza dell'operatore dalla precedenza maggiore a quella minore.
Nome operatore | Descrizione |
---|---|
( ) | Delimitatore parametro funzioni |
( ) | Raggruppamento |
+, - | Unario |
*, /, % | Moltiplicazione, divisione, modulo |
+, - | Addizione, sottrazione |
==, !=, >, >=, <, <= | Relazionale |
(implicito) | Concatenazione |
Esempio:f(3+x)*5
è f(3+x)
moltiplicato per 5
.
Lingua
Modello | Esempio modello | Esempio reale | Risultato |
---|---|---|---|
concatenazione | 'string1' 'string2' | 'a' func 'b' | aVARb if func='VAR' |
espressioni relazionali | func1 [operatore_relazionale] func2 | func1 > func2 | True if func1=5 and func2=1 |
condizione or | or(expr1,expr2,....) | or(a>100,a==0,b==1) | True se una delle espressioni restituisce true |
condizione and | and(expr1,expr2,...) | and(a>3,a<10) | True se tutte le espressioni restituiscono true |
condizione not | not(expr1) | not(a==b) | True se tutte le espressioni restituiscono false |
decisione | if(relational_expression,trueexpr,falseexpr) | if(a>v,1,0) | Se l'espressione relazionale è true, il valore è impostato su trueexpr. Se l'espressione relazionale è false, il valore è impostato su falseexpr. |
decisione | if(value,trueexpr,falseexpr) | if(func2,'true','false') | If func2 ha un valore numerico diverso da 0 o un valore di stringa diverso dalla stringa vuota, il literal stringa è true, altrimenti false. |
Istruzioni equivalenti
Base | Equivalente | Commenti |
---|---|---|
a | a() | Le variabili sono funzioni senza (). |
'*' a | '*'a() | La concatenazione non richiede spazi tra input e la funzione a può essere rappresentata in entrambi i modi. |
Definizione linguaggio EBNF
In questo EBNF (Extended Backus-Naur Form), un'espressione CEL viene rappresentata dalla produzione expr. Le operazioni relazionali e numeriche si comportano come controparti del linguaggio C. Le espressioni consecutive insieme producono un risultato.
expr = "(", expr, ")" | catenation | numexpr | relexpr | ("+" | "-"), expr | function call | string | number;catenation = expr, expr;numexpr = expr, ("+" | "-" | "*" | "/" | "%"), expr;relexpr = expr, ("==" | "!=" | "<" | ">" | "<=" | ">="), expr;function call = identifier, [ "(", parameters, ")" ];parameters = expr, { ",", expr };identifier = (alpha | "_"), { (alpha | "_" | digit ) };string = "'", (* sequence of characters, with standard \\ escapes *), "'";number = (digit { digit }) | ({ digit } . {digit});
Nota: Non sono presenti variabili, solo chiamate di funzione; una chiamata di funzione senza
una specifica di parametro si comporta esattamente come una variabile.
Funzioni di contesto integrate
Nome funzione | Sintassi | Descrizione |
---|---|---|
substr | substr(f,start [,length]) | start è a una posizione dalla fine della stringa. start ha base zero. start può essere un valore negativo. |
trim | trim(string [, charsToTrim]) | Gli spazi vuoti tagliati (o l'elenco di caratteri specificati in charsToTrim) da sinistra a destra della stringa. |
rtrim | rtrim(string [, charsToTrim]) | Gli spazi vuoti tagliati (o l'elenco di caratteri specificati in charsToTrim) da destra della stringa. |
ltrim | ltrim(string [, charsToTrim]) | Gli spazi vuoti tagliati (o l'elenco di caratteri specificati in charsToTrim) da sinistra della stringa. |
indexof | indexof(string, substr [, start ]) | Restituire la posizione indice iniziale della stringa secondaria nella stringa. Se substr non viene trovato, viene restituito -1 . |
fmt | fmt(formatString [,values]... ) | Formattare i valori mediante formatString. |
tr | tr(string, fromChars [, toChars]) | Convertire i caratteri che corrispondono a fromChars nella stringa nel toChars corrispondente. Se il carattere fromChars non ha un carattere corrispondente in toChars (corrispondenza posizione), fromChar viene rimosso dalla stringa di input. Se toChars viene omesso, tutti i caratteri elencati in fromChars vengono rimossi nel valore restituito. |
bin | bin(string [, trueChar ]) | Utilizzando trueChar come on-bit nella stringa, la stringa di input viene convertita in un numero. Se trueChar viene omesso, "1" è l'on-bit. |
fmtbase | fmtbase(value, numChars [, baseString ]) | Se baseString viene omesso, viene assunto il valore "0123456789ABCDEF", che restituisce i numChars più a destra dopo la conversione del valore nella base rappresentata da baseString. baseString può essere un qualunque elenco di caratteri, partendo dal presupposto che quello più a sinistra rappresenti lo zero e quello più a destra il valore massimo del sistema base in cui viene eseguita la conversione. |
exists | exists(value) | Restituisce true se il valore fornito restituisce true. (Questa funzione è equivalente alla funzione defined.) |
defined | defined(value) | Restituisce true se il valore fornito restituisce true. Se il valore è un nome di proprietà RICOH ProcessDirector, questa funzione restituisce true se la proprietà è definita nel database. Se una proprietà è definita nel database, è possibile fare riferimento ad essa in altre funzioni CEL. |
len | len(stringa) | Restituisce il numero di caratteri nella stringa di input. |
nil | nil | Restituisce un valore utilizzabile nelle funzioni CEL per rappresentare un valore nullo. |
aggr | [aggr=sum] [aggr=max] [aggr=min] | Restituisce il valore di somma, massimo o minimo di un'espressione (expr) valutata rispetto a tutti i documenti nel lavoro. Se si dispone della funzione Insertore, è possibile utilizzarla nel file delle regole per il record di intestazione del file di controllo dell'insertore. |
Funzioni di contesto record
Nome funzione | Sintassi | Descrizione |
---|---|---|
nome_campo | nome_campo o nome_campo() | Il valore del campo per il record corrente nel contesto. |
recnum | recnum o recnum() | Il numero di record del record corrente da utilizzare nel contesto. |
Funzioni di contesto che memorizzano in cache il record
Nome funzione | Sintassi | Descrizione |
---|---|---|
nome_campo | nome_campo o nome_campo(offset) | Se offset è 0 oppure è un valore mancante, è il valore del campo per il record corrente nel contesto. Se offset è un numero positivo, è il valore del campo per il record offset avanti. Se offset è un numero negativo, è il valore del campo per il record offset dietro. Il numero massimo di record attualmente memorizzati nella cache è 10. Il numero di record memorizzati preventivamente nella cache può avere un valore qualsiasi e viene determinato dinamicamente durante l'elaborazione. |
recnum | recnum o recnum() | Il numero di record del record corrente da utilizzare nel contesto. |
Esempi
Espressione | Spiegazione |
---|---|
if(or(a>100,a==0),1,0) | Se il valore di a è superiore a 100 o uguale a 0, questa espressione restituisce 1, altrimenti restituisce
0. |
if(and(a>3,a<10),1,0) | Se il valore di a è superiore a 3 e inferiore a 10, questa espressione restituisce 1, altrimenti restituisce
0. |
if(fld,fld,'') | Considera un valore mancante come una stringa vuota, altrimenti, lo considera come non definito, che è differente da uno spazio vuoto. |
fmtbase(if(output_bin=='2',1,0) + if(output_bin=='3',2,0) + if(meter == '1', 4,0) , 1) | Restituisce un valore esadecimale, in cui il bit di ordine inferiore (da destra) indica
se output_bin è impostato su 2; il secondo bit indica se output_bin è impostato su 3 e il terzo bit indica se meter è impostato su 1. |
fmtbase(if(meter=='2',1,0) + if(substr(mch_isrt_bins,0,1)=='Y',2,0) + if(substr(mch_isrt_bins,1,1)=='Y',4,0) , 1 ) | Restituisce un valore esadecimale, in cui il bit di ordine inferiore (da destra) indica
se meter è impostato su 2; il secondo bit indica se il primo carattere di mch_isrt_bins è impostato su 'Y' e il terzo bit indica se il secondo carattere di mch_isrt_bins è impostato su 'Y'. |
fmtbase(63,2,"0123456789ABCDFGHJKLMNPQRSTVWXYZ") | Converte 63 in "1Z". Qualsiasi stringa può essere utilizzata come base. |
tr('abc', 'b') | Rimuove tutti i caratteri 'b'. |
tr('00101', '01', 'NY') | Converte '0' in 'N' e '1' in 'Y'. Risulta in 'NNYNY'. |
tr('00101', '0123456789Y', 'YYYYYYYYYYN') == 'YYYYY' | Restituisce true se tutti i caratteri in '00101' sono cifre. '00101' può essere sostituito da un valore funzione di 5 caratteri. |
len(tr('00101','0')) | Restituisce 2. Rimuove tutti gli "0" dalla stringa di input e restituisce la lunghezza dei caratteri restanti. Conta effettivamente i numero '1' nella stringa di input. |
[expr=Doc.TotalSheets] [aggr=sum] | Restituisce la somma di tutti i valori nella proprietà Doc.TotalSheets in tutti i documenti nel lavoro. |
[expr=Doc.TotalSheets] [aggr=max] | Restituisce il valore massimo nella proprietà Doc.TotalSheets in tutti i documenti nel lavoro. |
[expr=Doc.TotalSheets] [aggr=min] | Restituisce il valore minimo nella proprietà Doc.TotalSheets in tutti i documenti nel lavoro. |
[expr=recnum>1] | Ignorare la prima riga del file (leggere esclusivamente i numeri di record maggiori di 1.) |