### Modificateurs

Pour bâtir un nouveau nom vous voulez sans doute utiliser une variable mais vous désirez en changer la valeur. Par exemple : changer sa casse, supprimer certains caractères, en échanger des parties, changer le format d'une date ....

Les modificateurs sont les outils faits pour effectuer ces tâches.

Il en existe différentes classes :

- Modificateurs de casse
- Modificateurs de caractère (conversion)
- Modificateur de chaîne : "[ ]"
- Modificateur de chaîne : "( )"
  - Extraction
  - Remplacement
  - Expression régulière
  - Translittération
- Modificateur de date
- Modificateurs spécifiques à certaines variables
- Renommage par groupe

Note : Dans le texte qui suit, le délimiteur de chaîne utilisé est `"` (guillemet). En fait, vous pouvez utiliser `"` ou `'` (apostrophe). Les délimiteurs de début et de fin doivent être identiques.

#### Modificateurs de casse

Ces modificateurs sont spécifiés immédiatement après le `'%'` de la variable :

`u` | tous les caractères en majuscule
`l` | tous les caractères en minuscule
`U` | premier caractère de chaque mot en majuscule, les autres en minuscule. Les mots sont séparés par les caractères spécifiés dans "Préférences/Forcer la casse/Caractères séparateurs de mots".
`L` | premier caractère en majuscule, le reste en minuscule

Par exemple, pour le fichier `"Ébölie family photo.JPG"` :

> `

> Expression | Résultat
> %uf | ÉBÖLIE FAMILY PHOTO.JPG
> %lf | ébölie family photo.jpg
> %Uf | Ébölie Family Photo.jpg
> %Lf | Ébölie family photo.jpg

> `

Dans "Préférences/Calcul du nouveau nom/Forcer la casse" il est possible de définir une liste de mots avec une casse particulière que vous souhaitez utiliser. Cela s'applique uniquement au contenu des variables donc pas au texte libre. Deux modificateurs permettent de forcer ou d'empêcher l'utilisation de cette fonctionnalité directement dans l'expression :

`+` | la forcer
`-` | l'empêcher

Si `"FamilY"` fait partie des mots avec une casse à forcer :

> `

> Expression | Résultat
> %+f | Ébölie FamilY photo.JPG
> %+uf | ÉBÖLIE FamilY PHOTO.JPG
> %-uf | ÉBÖLIE FAMILY PHOTO.JPG

> `

#### Modificateurs de caractère (conversion)

Comme pour les modificateurs de casse, ces modificateurs sont représentés par une lettre suivant le caractère `'%'` de la variable :

`@` | Conversion des caractères accentués en ASCII standard ('é' → 'e', 'ü' → 'u', 'Á' → 'A' ...) Par exemple, pour le fichier `"Ébölie family photo.JPG"` : `
Expression | Résultat
%@f | Ebolie family photo.JPG
%@uf | EBOLIE FAMILY PHOTO.JPG
%@Lf | Ebolie family photo.jpg
`
`#` | Conversion des caractères '%XX' Vous avez peut-être remarqué que parfois des noms de fichiers contiennent des séquences hexadécimales commençant par un `'%'`. Elles apparaissent généralement après un transfert entre des systèmes qui ne prennent pas en charge le même jeu de caractères. Ce modificateur va essayer de convertir ces séquences. Exemples : `
Contenu de %f | %#f
bb%41cc.txt | bbAcc.txt
%C2ccentue.txt | Âccentue.txt
%C3%A9l%C3%A8ve.jpg | élève.jpg
%D8%AE%D9%86%D9%81%D8%B3%D8%A7%D8%A1.png | خرحبا.png
%FF%FE%41%00%2E%00%74%00%78%00%74%00 | A.txt
`
`&` | Conversion des caractères UTF8-ascii en UTF8 Vous avez peut-être aussi remarqué des séquences ressemblant à celles ci-dessous. Généralement elles apparaissent suite à une interprétation erronée de caractères encodés en UTF8. Ce modificateur va essayer de convertir ces séquences. Exemples : `
Contenu de %f | %&f
Ã©lÃ¨ve.jpg | élève.jpg
TyÃ¶pÃ¶ytÃ¤.jpg | Työpöytä.jpg
Ø®Ù†ÙØ³Ø§Ø¡.png | خرحبا.png
`

#### Modificateur de chaîne : "[ ]"

Chaque variable peut être suffixée par un modificateur `"[]"`.

Elle sera "découpée" en un tableau de sous-chaînes suivant les caractères séparateurs spécifiés.
L'utilisation est la suivante : `[ i, n, "s" ]`

> `i` | numéro de la sous-chaîne à extraire S'il vaut "0" (zéro), cela équivaut à la chaîne complète sans les espaces de début et de fin S'il est négatif, l'extraction est faite à partir de la fin
> `n` | nombre d'éléments à extraire à partir du ième, optionnel S'il vaut "0" (zéro), l'extraction est faite jusqu'à la fin de la chaîne S'il est négatif, le nombre d'éléments à extraire est calculé à partir de la fin de la chaîne 1 est la valeur par défaut
> `s` | liste des caractères séparateurs, optionnel Si elle n'est pas spécifiée, c'est celle définie dans "Préférences/Calcul du nouveau nom/Séparateurs d'éléments de tableaux" qui est utilisée

Si la chaîne choisie est `"%b"`, `"%b[n]"` contient les caractères du nom de base compris entre les n-1 et n ième occurrences d'un séparateur. Les espaces de début et de fin sont supprimés (trim complet).

Par exemple, sur le fichier :
`"01 - Artiste_Groupe - Titre chanson .mp3"`
avec `"-"` figurant dans "Préférences/Calcul du nouveau nom/Séparateurs d'éléments de tableaux" :

> `

> Expression | Résultat
> %b[3].%e | Titre chanson.mp3
> %ub[3] - %b[2].%e | TITRE CHANSON - Artiste_Groupe.mp3
> %b[1,2].%e | 01 - Artists_Groups.mp3
> %b[1].%e | 01.mp3
> %b[-3].%e | 01.mp3
> %b[-1].%e | Titre chanson.mp3
> %b[0] | 01 - Artiste_Groupe - Titre chanson
> %b[2,"_"] | Groupe - Titre chanson
> %b[2][2,"_"] | Groupe
> %b[2,0].%e | Artiste_Groupe - Titre chanson.mp3
> %b[1,-1].%e | 01 - Artiste_Groupe.mp3
> %b[2,2,"t"] | iste_Groupe - Ti

> `

#### Modificateur de chaîne : "( )"

Chaque variable peut être suffixée par un modificateur `"()"`.

Ce modificateur peut avoir plusieurs fonctions :

- Extraction de chaîne

  L'utilisation est très proche du "substr" standard : `( p, n )`

  `p` | position de départ Si elle est négative, elle est relative à la fin de la chaîne
  `n` | nombre de caractères S'il vaut "0" (zéro) ou n'est pas spécifié, l'extraction est faite jusqu'à la fin S'il est négatif, le nombre de caractères à extraire est calculé à partir de la fin de la chaîne

  Voici quelques exemples utilisant le fichier `"autoexec.bat"` :

  `

  Expression | Résultat
  %b(1,4).%e | auto.bat
  %b(5).%e | exec.bat
  %ub(5,2).%e(1,1) | EX.b
  %b(-4,3).bat | exe.bat
  %b(1,-4).bat | auto.bat
  %b(-4,-2).bat | ex.bat
  %b(4,-2).bat | ex.bat

  `
- Remplacement de chaîne

  L'utilisation est proche du "replace" standard : `( "s1", "s2", s, n, c )`

  `s1` | chaîne à remplacer
  `s2` | chaîne de remplacement Si elle n'est pas spécifiée, la chaîne à remplacer est supprimée
  `s` | numéro de l'occurrence de départ S'il est négatif, il est relatif à la fin de la chaîne
  `n` | nombre de remplacements à effectuer S'il est négatif toutes les occurrences restantes sont traitées
  `c` | nombre indiquant si la recherche tient compte de la casse : 0 (zéro) pour non, une autre valeur pour oui

  Les quatre derniers paramètres sont optionnels.
  Par défaut toutes les occurrences sont traitées et la recherche ne tient pas compte de la casse.

  Voici quelques exemples utilisant le fichier `"autoexec.bat"` :

  `

  Expression | Résultat
  %b("auto","automatic").%e | automaticexec.bat
  %b("exe").%e | autoc.bat
  %b("e","#",2,1).%e | autoex#c.bat
  %b("e","#",-1).%e | autoex#c.bat
  %b("e","#",1,1).%e | auto#xec.bat
  %b("e","#",-2,1).%e | auto#xec.bat
  %b("E","#",1,-1).%e | auto#x#c.bat
  %b("E","#",1,-1,0).%e | auto#x#c.bat
  %b("e",,,,1).* | autoxc.bat

  `
- Modification par expression régulière

  L'utilisation est proche du standard : `(s/exp/fmt/mod)`

  `s` | le `'s'` est une constante, il doit être présent
  `exp` | expression régulière
  `fmt` | format de remplacement
  `mod` | modificateurs
  `g` | traiter toutes les occurrences
  `i` | recherche ne tenant pas compte de la casse

  Vous pouvez retrouver les détails de la syntaxe dans la documentation wxWidgets en ligne (http://docs.wxwidgets.org/trunk/overview_resyntax.html).
  (Siren utilise le type ARE)

  Voici quelques exemples utilisant le fichier `"autoexec.bat"` :

  `

  Expression | Résultat
  %b(s/[AE]/#/i).%e | #utoexec.bat
  %b(s/[AE]/#/gi).%e | #uto#x#c.bat
  %b(s/(.{4})(....)/\2 - \1/).%e | exec - auto.bat

  `
- Modification par translittération

  Ce modificateur peut remplacer un caractère par un autre, en enlever et supprimer les répétitions.
  Il est basé sur les commandes standards `"tr"` et `"y"`.

  L'utilisation est proche du standard : `(tr/s/r/mod)`

  `tr` | `"tr"` est une constante, elle doit être présente
  `s` | les caractères à rechercher. Des intervalles peuvent être spécifiés, par exemple : `A-Z0-1`
  `r` | les caractères de replacement. Des intervalles peuvent être spécifiés ici aussi.
  `mod` | modificateurs
  `c` | inverser la recherche
  `d` | supprimer les caractères qui sont présents dans la liste de recherche mais sans correspondance dans la liste de remplacement. Sans cette option ils sont simplement copiés.
  `s` | supprimer les répétitions

  Les remplacements sont effectués par rapport à la position des caractères dans les listes.
  Par exemple, en utilisant le fichier : `"a video file.avi"`

  `

  %b(tr/aeiouy/AEIOUY/).%e | donne | A vIdEO fIlE.txt

  `
  `'e'` est à la deuxième position dans la liste de recherche. Il est remplacé par le deuxième caractère de la liste de remplacement : `'E'`.
  Pour les intervalles le principe est le même sauf que la position prend en compte leur longueurs.

  Voici quelques exemples utilisant le même fichier :

  `

  Expression | Résultat
  %b(tr/a-f/1-6/).%e | 1 vi45o 6il5.avi
  %b(tr/a-f/ABCDEF/).%e | A viDEo FilE.avi
  %b(tr/avideofl/4√1∂30∫7/).%e | 4 √1∂30 ∫173.avi
  %b(tr/aeiouy/-/c).%e | a--i-eo--i-e.avi
  %b(tr/aeiouy/#/d).%e | # vd fl.avi
  %b(tr/idfl/@@@@/s).%e | a v@eo @e.avi

  `

#### Modificateur de date

Dans Siren, le format par défaut des date et heure est `AAAAMMJJ_HHMMSS`.

En suffixant une variable "date" avec un modificateur `"{}"` (accolades ouvrante et fermante) il est possible de spécifier le format à utiliser et de changer sa valeur. Pour plus de détails à propos de sa syntaxe, consultez la page d'aide dédiée.

L'utilisation est la suivante : `{ "f", t }`

- `f` : format à utiliser, optionnel
- `t` : temps à ajouter (positif ou négatif), optionnel
  Il suit un format "hms". Seules les heures (h), minutes (m) et secondes (s) peuvent être spécifiées.
  Il ne doit pas être entouré de guillemets.
  Par exemple : 12s , -1h51m , +6h5m40s ...

#### Modificateurs spécifiques à certaines variables

Il est possible de modifier la présentation et la valeur de certaines variables :

- Soit directement dans l'expression à l'intérieur d'un modificateur `"{}"` (accolades). Ce modificateur doit immédiatement suivre le nom de la variable.
- Soit de façon permanente dans "Préférences/Calcul du nouveau nom/Nombres" (sauf pour les variables `%NNx`).

Voici une liste de ces variables avec la description de leur modificateur dédié.

Pour les numéros de sélection : `%n`, `%np`, `%nc`, `%ncs`, `%ncf` et `%ncfs`
l'utilisation est la suivante : `{ t, d, i }`

- `t` : taille (une taille à 1 évite tout ajout de zéros à gauche)
- `d` : valeur de départ
- `i` : incrément

Pour les nombres contenus dans le nom de base : `%N`, `%N1`, `%N2` ...
l'utilisation est la suivante : `{ t, v, p }`

- `t` : taille (une taille à 1 évite tout ajout de zéros à gauche)
- `v` : valeur à ajouter (positive ou négative)
- `p` : position du nombre à extraire
  Si elle est négative, l'extraction est faite à partir de la fin

Pour les chaînes non numériques contenues dans le nom de base : `%NN`, `%NN1`, `%NN2` ...
l'utilisation est la suivante : `{ p }`

- `p` : position de la chaîne à extraire
  Si elle est négative, l'extraction est faite à partir de la fin

Pour le nombre de fichiers sélectionnés : `%ns` ainsi que pour les numéros de piste : `%mT`, `%AT` et `%An`
l'utilisation est la suivante : `{ t }`

- `t` : taille (une taille à 1 évite tout ajout de zéros à gauche)

Pour les longueurs des chaînes aléatoires : `%Rn`, `%Ra` et `%Rs`
l'utilisation est la suivante : `{ l }`

- `l` : longueur

Par exemple (si les valeurs par défaut n'ont pas été modifiées) :

> `

> Expression | Num Sél 1 | Num Sél 2 | Num Sél 3
> Img_%n{2}.jpg | Img_01.jpg | Img_02.jpg | Img_03.jpg
> Img_%n{2,10}.jpg | Img_10.jpg | Img_11.jpg | Img_12.jpg
> Img_%n{2,10,5}.jpg | Img_10.jpg | Img_15.jpg | Img_20.jpg

> `

Pour `Fic2_15zzz784.txt` :

> `

> %N{4,0,1} | vaut | 0002
> %N{4,0,-1} | vaut | 0784
> %NN{-1} | vaut | zzz

> `

#### Renommage par groupe

Par défaut le contenu d'une variable appartient toujours au fichier en cours de traitement. Ce modificateur permet de changer ce comportement et d'utiliser une information d'un autre fichier du "groupe" auquel il appartient.
Un groupe est un nombre de fichiers sélectionnés consécutivement.

Ce modificateur doit être spécifié immédiatement après le `'%'`.

L'utilisation est la suivante : `< t, i >`

- `t` : taille du groupe
- `i` : numéro du fichier dans le groupe (de 1 à la taille du groupe), optionnel
  1 est la valeur par défaut

Il ne s'applique qu'à la variable à laquelle il est associé.

Voici quelques exemples basés sur des fichiers nommés : `aaa.doc`, `aaa1.pdf`, `dcmt.doc`, `dcmt-two.pdf` et sélectionnés dans le même ordre :

> `

> Expression | aaa.doc | aaa1.pdf | dcmt.doc | dcmt-two.pdf
> %<2,1>b.%e | aaa.doc | aaa.pdf | dcmt.doc | dcmt.pdf
> %<2,2>b.%e | aaa1.doc | aaa1.pdf | dcmt-two.doc | dcmt-two.pdf
> %<2,1>ub(1,2).%ue | AA.DOC | AA.PDF | DC.DOC | DC.PDF
> %b.%<2,1>e | aaa.doc | aaa1.doc | dcmt.doc | dcmt-two.doc
> %<2,1>b-%<4,4>b[2].%e | aaa-two.pdf | aaa-two.pdf | dcmt-two.pdf | dcmt-two.pdf

> `

Un exemple détaillé peut être trouvé ici

.