## Fonctionnalités avancées

Voici quelques "astuces" et informations qui pourrait vous être utiles :

- Le caractère * (étoile)
- Concaténation de modificateurs
- Précédence des modificateurs
- Caractère d'échappement
- Chemin du nouveau nom
- Variables d'environnement
- Inclusion
- Sous-expressions
- Des variables comme paramètres

#### Le caractère * (étoile)

Le caractère (*) peut être utilisé dans une expression. Placé avant le '.' séparant le nom de base de l'extension, il représentera le nom de base, situé après il représentera l'extension.
Ce n'est pas une variable et sa valeur ne peut pas être modifiée.

#### Concaténation de modificateurs

Vous pouvez "concaténer" autant de modificateurs `"()"` et `"[]"` que vous le désirez. Ils sont évalués de la gauche vers la droite, la sortie de l'un devenant l'entrée de l'autre.

Examinons, pas à pas, un exemple sur `"autoexec.bat"` :
`%Lb("au","au-")(s/e/e_/g)[2](5).%e`

> `

> %b | sur | autoexec.bat | donne | autoexec
> ("au","au-") | sur | autoexec | donne | au-toexec
> (s/e/e_/g) | sur | au-toexec | donne | au-toe_xe_c
> [2] | sur | au-toe_xe_c | donne | toe_xe_c
> (5) | sur | toe_xe_c | donne | xe_c
> le modificateur 'L' | sur | xe_c | donne | Xe_c
> ajout du texte fixe "." | sur | Xe_c | donne | Xe_c.
> ajout de "%e" (extension) | sur | Xe_c. | donne | Xe_c.bat

> `

#### Précédence des modificateurs

De nombreux modificateurs peuvent être associés à une variable. Voici l'ordre suivi pour leur évaluation :

1. Modificateur spécial : `"{}"`
2. Modificateurs de chaîne : `"()"` et `"[]"`
3. Conversion de caractère
   1. `#` : Caractères '%XX'
   2. `&` : UTF8-ascii en UTF8
   3. `@` : Caractères accentués en ASCII standard
4. Modificateur de casse

#### Caractère d'échappement

Vous pouvez avoir envie d'utiliser des caractères "spéciaux" comme `'('`, `';'`, `'*'` ... dans une expression. Pour supprimer le statut "spécial" d'un caractère, faites le précéder d'un `'\'` (backslash).

Par exemple, pour renommer le fichier : `Image.jpg` en `Image(2).jpg` avec l'expression : `%b(2).%e`
Utilisez : `%b\(2).%e`

#### Chemin du nouveau nom

Sauf à utiliser des chemins absolus, les chemins des nouveaux noms sont toujours relatifs au répertoire courant de Siren.

Soyez prudent lorsque vous travaillez avec les sous-répertoires chargés (bouton ).

Par exemple :

- si le répertoire courant de Siren est `"\photo"`
- si le fichier sélectionné a pour nom actuel `"2011\paris.jpg"`
- si son nouveau nom est `"..\paris.jpg"`

Alors, après renommage, `"paris.jpg"` sera dans `"\"` et non dans `"\photo"`.
`".."` est relatif à `"\photo"` et non à `"2011"`.

#### Variables d'environnement

Vous pouvez utiliser n'importe quelle variable qui appartient à l'environnement du process.
Leur nom doit être spécifié de cette façon : `${NOM}`
Par exemple : `${PATH}`

Un liste complète est disponible dans la fenêtre de "Complétion".

#### Inclusion

Vous pouvez utiliser vos expressions favorites comme une "librairie". Tout "code" écrit et sauvegardé devient réutilisable.
Le nom du favori doit être spécifié de cette façon : `#{"exp"}`

Vous ne pouvez l'utiliser qu'en dehors d'une variable et de ses modificateurs.

Par exemple, si vous avez un favori nommé `"img"` associé à l'expression `"Image %n"`, vous pouvez le réutiliser de ces façons :

> `#{"img"} - Garden.%e
> File - #{"img"} - Zoo.%e`

Il est possible d'aller un peu plus loin.
Le favori `"img"` se termine par `"%n"` qui est une variable acceptant des paramères spécifiques. Par exemple : `"{2,10}"`.

Si l'expression `"#{'img'}{2,10} - %f"` est appliquée sur `"Garden.jpg"` :

> `

> #{"img"}{2,10} - %f | donne | Image %n{2,10} - %f
> Image %n{2,10} - %f | donne | Image 10 - Garden.jpg

> `

Bien sûr, vous pouvez faire cela avec d'autres modificateurs.

#### Sous-expressions

Une expression peut elle-même être composée d'expressions (ou sous-expressions).

En les séparant par des `';'` elles peuvent être chaînées. Le "nouveau nom" créé par l'une devient le "nom actuel" utilisé par la suivante.

Par exemple, pour `"PHOTO CLOWN 1.JPG"`

> `

> %lf;%b("clown","CLOWN").%e | donne | photo CLOWN 1.jpg
> %b[3," "].%le;%N{5,10}.%e | donne | 00011.jpg

> `

#### Des variables comme paramètres

Dans une expression, n'importe quel paramètre peut être remplacé par une variable et tous ses modificateurs.

Cela s'applique aux paramètres dans :

- Les modificateurs de variables : `{}`, `()` et `[]`
- Les variables d'environnement : `${}`
- Les inclusions : `#{}`
- ...

Par exemple, les expressions suivantes sont correctes :

> `

> %f("Text",%At) | Remplacera, dans le nom, le texte "Text" par le titre audio
> %f("Text",%uAt(1,5)) | Remplacera, dans le nom, le texte "Text" par le cinq premiers caractères en majuscule du titre audio
> %Rs{%Rn{1,1,10}} | Génèrera une chaîne aléatoire d'une longueur aléatoire comprise entre un et dix caractères

> `

Il peut être intéressant d'utiliser cette possibilité avec la variable `%T`.
Par exemple, `%T1{%fc}` contiendra la première ligne du fichier traité.

Note : Dans certaines limites, les lignes des fichiers utilisés avec `%T` sont conservées en mémoire par Siren. Donc le volume de mémoire utilisé dépendra du nombre de fichiers traités.