1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
Annexe technique 4 - Filtres pour les patrons de documents {#annexe-technique-4-jinja-filters}
==========================================================
Auteurs
: Étienne Loks, Valérie-Emma Leroux
Date
: 2022-03-08
Copyright
: CC-BY 3.0
Ishtar Version
: v3.1.0
------------------------------------------------------------------------
Les patrons de documents permettent d\'utiliser des filtres sur les
données de la base de données. Cela permet essentiellement de mettre en
forme les champs. Certains de ces filtres sont directement disponibles
via la bibliothèque Jinja utilisée dans Ishtar, d\'autres ont été
développés au sein d\'Ishtar.
Pour utiliser un filtre, à la suite de la variable, il faut utiliser le
caractère [\|]{.title-ref}, par exemple :
[{{variable\|capfirst}}]{.title-ref}.
::: {.note}
::: {.title}
Note
:::
Les filtres peuvent se chaîner. On peut donc écrire :
[{{variable\|human\_date\|capitalize}}.]{.title-ref}
:::
Pour les différents exemples nous utilisons directement une chaîne de
caractères pour illustrer, en utilisation réelle on utilise un nom de
variable.
La bibliothèque logicielle Jinja utilisée pour la génération des patrons
met à disposition nativement un certain nombre de filtres :
[documentation des filtres de base
(anglais)](https://jinja.palletsprojects.com/en/2.11.x/templates/#list-of-builtin-filters).
Ishtar met a disposition des filtres supplémentaires :
Formatage des chaînes de caractères
-----------------------------------
- **capfirt**
Ce filtre met la première lettre en majuscule et ne touche pas au reste
de la chaîne.
> - [{{\"saint georges d\'oléron\"\|capfisrt}}]{.title-ref} -\> [Saint
> georges d\'oléron]{.title-ref}
- **lowerfirst**
Ce filtre met la première lettre en minuscule et ne touche pas au reste
de la chaîne
> - [{{\"SAINT-GEORGES-D\'OLÉRON\"\|lowerfirst}}]{.title-ref} -\>
> [sAINT-GEORGES-D\'OLÉRON]{.title-ref}
- **capitalize**
Ce filtre met la première lettre de chaque mot en majuscule et le reste
de la chaîne en minuscule.
> - [{{\"SAINT-GEORGES-D\'OLÉRON\"\|capitalize}}]{.title-ref} -\>
> [Saint-Georges-d\'Oléron]{.title-ref}
- **human\_date**
Ce filtre permet d\'afficher une date en toutes lettres.
> - [{{\"2020-03-03\"\|human\_date}}]{.title-ref} -\> [3 mars
> 2020]{.title-ref}
- **int**
Pour afficher un nombre sans décimales.
> - [{{\"600.0\"\|int}}]{.title-ref} -\> [600]{.title-ref}
Manipulation des chaînes de caractères
--------------------------------------
- **splitpart**
Ce filtre permet d\'extraire un élément depuis une chaîne de caractères
en prenant en compte un séparateur. Par exemple depuis la chaîne
[\"2,3,10\"]{.title-ref}, accéder au troisième élément :
[\"10\"]{.title-ref}.
Ce filtre nécessite au minimum un argument, le numéro de l\'élément
souhaité (en commençant le compte à 0) : pour avoir le second élément,
il faut indiquer en argument [\"1\"]{.title-ref}.
Le second argument correspond à la borne de fin non incluse (en
commençant le compte à 0) : ainsi pour avoir jusqu\'au deuxième élément
il faut indiquer en argument [\"2\"]{.title-ref}. Si l\'on ne souhaite
avoir qu\'un seul élément, on indique [\"0\"]{.title-ref}.
Par défaut le séparateur [\",\"]{.title-ref} est utilisé si l\'on
souhaite un autre séparateur, on spécifie celui-ci en troisème argument.
On peut associer un dernier argument qui permet de spécifier le(s)
caractère(s) de concaténation que l\'on souhaite utiliser pour la chaîne
en retour.
> - [{{\"9,2,10\"\|splitpart(1)}}]{.title-ref} -\> [2]{.title-ref}
> - [{{\"chaise;bureau;papier;paragraphe\"\|splitpart(0,0,\";\")}}]{.title-ref}
> -\> [chaise]{.title-ref}
> - [{{\"182025\_C001\"\|splitpart(1,0,\"\_\")}}]{.title-ref} -\>
> [C001]{.title-ref}
> - [{{\"chaise;bureau;papier;paragraphe\"\|splitpart(1,3,\";\")}}]{.title-ref}
> -\> [bureau;papier]{.title-ref}
> - [{{\"chaise;bureau;papier;paragraphe\"\|splitpart(1,4,\";\",\"\|\")}}]{.title-ref}
> -\> [bureau\|papier\|paragraphe]{.title-ref}
|