This page is part of a static HTML representation of the TiddlyWiki at https://tiddlywiki.com/

Introduction à la rédaction d'un filtre

19 juin 2015 à 21h05
Ceci décrit les bases de l'écriture d'un filtre de sélection d'un ensemble de tiddlers. Pour une présentation plus technique, voir Syntaxe d'un filtre.

Les filtres ne font rien par eux-même si vous vous contentez de les intégrer dans un tiddler. Il faut un contexte. Une manière facile d'expérimenter les filtres est de les saisir dans l'option Filtrer de l'onglet Recherche avancée.

Le plus simple des cas se présente lorsque vous savez exactement quels tiddlers vous recherchez. Saisissez chaque titre entre une paire de double crochets, un espace entre chacun :

[[Livre de recettes]] [[OeufsBrouillés]] [[Gateau aux pommes de moman]]

Vous pouvez omettre les crochets quand un titre ne contient aucun espace :

[[Livre de recettes]] OeufsBrouillés [[Gateau aux pommes de moman]]

La paire de double crochets est une abréviation de :

[title[OeufsBrouillés]]

... qui offre une syntaxe du modèle général de tous les filtres :

[operateur[paramètre]]

En l'occurence, voici comment sélectionner tous les tiddlers étiquetés Recipe :

[tag[Recette]]

Vous pouvez inverser la sélection en ajoutant le point d'exclamation ! juste avant l'opérateur. Par exemple, nous pouvons sélectionner tous les tiddlers sans l'étiquette Recette :

[!tag[Recette]]

Les tiddlers peuvent être filtrés par d'autres champs que les titres ou les étiquettes :

[field:convive[4]]

Cette exemple sélectionnera tous les tiddlers qui ont 4 dans leur champ convive.

Comme le mot "convive" n'est pas un opérateur filtre standard (et n'est pas près de le devenir), vous pouvez omettre le préfixe field: en toute sécurité :

[convive[4]]

Combinaisons

Les filtres que nous avons examinés jusqu'à présent ont chacun une étape. Mais vous pouvez exécuter plusieurs étapes ensemble comme ceci :

[tag[Végétarien]!tag[soupe]convive[4]]

Notez que la séquence entière est contenue dans une seule paire de crochets.

Un tiddler doit correspondre à toutes les étapes de la séquence. Ainsi l'exemple supra renvoie à toutes les recettes végétariennes (autre que soupes) pour 4 convives.

Une série de séquences séparée sélectionnera les tiddlers qui correspondent à l'une des séquences. Nous pouvons réutiliser ceci pour trouver les recettes pour 3, 4 or 5 convives :

[convive[3]] [convive[4]] [convive[5]]

Si nous voulons ignorer les recettes végétariennes pour 4 convives, nous formulerons ainsi :

[convive[3]] [convive[4]!tag[Végétarien]] [convive[5]]

Par défaut, chaque séquence prend en compte tous les tiddlers du wiki. Mais on peut utiliser le signe + pour ne tenir compte que des seuls tiddlers sélectionnés par les précédentes séquences :

[convive[3]] [convive[4]] [convive[5]] +[tag[Végétarien]] +[sort[titre]]

Ceci sélectionne les recettes pour 3, 4 ou 5 convives, puis filtre celles qui correspondent uniquement aux végétariennes, et enfin trie ce qui reste dans l'ordre alphabétique des titres.

D'une façon similaire, nous pouvons utiliser le signe - pour extraire une séquence de tiddlers du résultat précédent. Ici nous sélectionnons toutes les recettes végétariennes exceptées deux :

[tag[Végétarien]] -[title[OeufsBrouillés]] -HaricotsSurToast

Paramètres spéciaux

Le paramètre de chaque étape que nous avons vu jusqu'à présent s'insérait entre crochets, signifiant un traitement littéral par TiddlyWiki. Mais deux autres formes de parenthèses sont possibles :

Les accolades {} indiquent que le paramètre est une Référence textuelle, et que sa valeur doit être recherchée dans un tiddler spécial. Par exemple, si nous avons un tiddler nommé Préférence dont le texte apparait être le mot Végétarien, nous pouvons dire

[tag{Préférence}]

est une alternative à [tag[Végétarien]]. Ce qui permet à 'préférence' d'évoluer dans le temps.

Les chevrons <> indiquent que le paramètre est le nom d'une variable dont la valeur sera utilisée en lieu et place. Ici, nous utilisons la variable intégrée currentTiddler au sein d'un filtre qui sélectionne tous les tiddlers dont le texte contient le titre du tiddler en cours :

[search<currentTiddler>]