Transclusion avec prefix


#1

Bonjour à tous, je reviens vers vous avec mes petits problèmes :blush:

Je cherche à transclure automatiquement plusieurs “tiddler binôme” par le biais du nom de leurs titres.

tiddler “$:/A” à tranclure dans le tiddler "A"
tiddler “$:/B” à tranclure dans le tiddler "B"
tiddler “$:/C” à tranclure dans le tiddler "C"
tiddler “$:/D” à tran…

Pour faire cela automatiquement j’ai pensé faire un truc du genre :
[{{!!title}} -addprefix[$:/]]

ou :
$:/{{!!title}}

Mais ça ne marche pas du tout ! Après des heures de test en tout genre je viens vous demander si c’est possible.


#2

Bonjour @Djodo
Je ne voyais pas trop ce que tu voulais faire avant de m’exercer sur un TW :yum:

Là comme ça je ne vois pas désolé. J’ai cherché un peu sur la liste anglophone, s’il y avait moyen de transcluder plus d’un paramètre (ce que tu cherche à faire quelque part), mais j’ai pas trouvé. Peut-être qu’il faudrait passer par une opération intermédiaire (avec une macro par exemple) pour avoir un seul paramètre à transclure.

Où alors si tu n’as pas finalement trop de tiddler comme ça à transclure, le faire manuellement, qui ne prendrait pas plus de temps que de chercher une manière de le faire automatiquement :sweat_smile:


#3

C’est vrai que je me suis demandé si j’étais clair dans ma question :wink:.
J’ai essayé aussi avec une macro comme par exemple :
/define mamacro(prefix$$:/$ titre$!!title$)
bidule machin chouette…(je sais plus exactement la notation)
Et c’est toujours le même problème, c’est à dire qu’il m’affiche le terme $:/A au lieu de me transclure le tiddler nommé: $:/A.
Et oui comme un gros feignant je voulais automatiser la chose et bah…et bah non :blush:. Si jamais je trouve je le partagerai !


#4

Bonjour à tous,

Je ne suis pas un pro dans TW, mais avez-vous pensé à la fonction list ?


#5

Avec cette opérateur ?

https://tiddlywiki.com/languages/fr-FR/index.html#list%20Operator

Je ne comprend pas très bien delta ? :roll_eyes:


#6

Bonjour,

La macro suivante :

\define TranscludeFromSystemTiddler(title)
<$transclude tiddler="$:/$title$"/>
\end

Invoquée de la manière suivante, semble fonctionner :

<$macrocall $name="TranscludeFromSystemTiddler" title=<<currentTiddler>> />

Cordialement,

Eskha


#7

Je n’arrive pas à faire fonctionner ta macro Eskha, je pense savoir faire fonctionné les macro pourtant puisque les autres fonctionnes…

Moi j’avais essayé celle-ci :

\define TranclusionParTitre(prefix:"$:/" name:"{{!!title}}"
$prefix$$name$
\end 

Puis un appel comme ceci :
<<TranclusionParTitre>>

Mais comme dit plus haut, au lieu de me tranclure le tiddler $:/A il m’écrit juste $:/A


#8

Bonjour Djodo,

Comme, je viens de ré-essayer et que cela fonctionne chez moi :
*Tu as fait un copier-coller depuis le forum hors celui-ci transforme certains guillements droits “” en guillemets “”

  • Je t’envoie ci dessous l’export des tiddlers avec un test fonctionnant (à copier dans un fichier json et importer pour vérifier). N’hésite pas à me dire ce qui ne fonctionne pas.
  • Soit je n’ai pas compris ta demande

[
{
“created”: “20180205144820622”,
“text”: “<$macrocall $name=“TranscludeFromSystemTiddler” title=“A” />”,
“title”: “A”,
“tags”: “”,
“modified”: “20180207145328229”
},
{
“created”: “20180205144749731”,
“text”: “\define TranscludeFromSystemTiddler(title)\n<$transclude tiddler=”$:/$title$"/>\n\end",
“title”: “MacroTransclusion”,
“tags”: “$:/tags/Macro”,
“modified”: “20180207145011047”
},
{
“created”: “20180205144703356”,
“text”: “A transclure dans le tiddler A”,
“title”: “$:/A”,
“tags”: “”,
“modified”: “20180207144742005”
}
]


#9

J’ai testé ta solution et je n’ai pas réussi à importer le tiddler “MacroTransclusion”. Il m’indique l’erreur :

Je vais reformuler ma demande, concrètement :

  1. Je crée un tiddler nommé : A
  2. Je crée un tiddler nommé : $:/A (le fantôme de A :wink:)

Par une macro magique le contenu du tiddler $:/A se transclue automatiquement dans le tiddler A.

  1. Je clone le tiddler A et je le renomme B
  2. Je clone le tiddler $:/A et je le renomme $:/B

Le tiddler $:/B est transclue dans le tiddler B sans modification de la macro. La macro récupère le titre du tiddler pour aller chercher son tiddler shadow. Qu’il soit nommé A, B ou C… il va chercher son binôme respectif $:/A, $:/B ou $:/C C’est pour cela que j’avais pensé à {{!!title}}.


#10

Bonsoir,

@Eskha : j’ai édité ton post pour écrire en mode code (je vais répondre à ton autre post, mais je ne pourrais/voudrais pas modifier le comportement de Discourse, il vaut mieux utiliser les fonctions pour écrire du code ou texte formaté).

@Djodo du coup sa première proposition fonctionne parfaitement !! Je viens de le tester sur tiddlywiki.com

Seule petite info complémentaire, la prévisualisation en live ne fonctionne pas, il faut que tu quitte le mode édition pour qu’il sache quel est le titre (puisque sinon c’est Draft of 'A' par exemple).

Du coup tu tag les tiddlers que tu souhaite transclure automatiquement, puis ajoute avec un template conditionnel, et c’est tout bon !


#11

Effectivement cela fonctionne !!! :grinning: Comme m’avait prévenu Eskha j’avais un problème de guillemet. Quel neuneu…:flushed:

Par contre j’ai modifié la macro et les tiddlers clone, et comme tu le dit Sylvain j’ai utilisé les TiddlersTemplates (tiddler modèle si j’ai bien compris). Et là, cela correspond parfaitement à ma demande.
Je résume pour ceux qui seraient intéressé :

  1. On crée un tiddler macro :

{
“text”: “\define TranscludeFromSystemTiddler(title)\n<$transclude tiddler=”$:/$title$"/>\n\end",
“bag”: “default”,
“revision”: “10”,
“type”: “text/vnd.tiddlywiki”,
“title”: “MacroTransclusion”,
“tags”: “$:/tags/Macro”,
“modified”: “20180208142900413”,
“created”: “20180205144749731”
}

  1. On crée un tiddler modèle nommé A :

{
“text”: “<$macrocall $name=“TranscludeFromSystemTiddler” title={{!!title}} />”,
“bag”: “default”,
“revision”: “14”,
“type”: “text/vnd.tiddlywiki”,
“title”: “A”,
“tags”: “”,
“modified”: “20180208142634710”,
“created”: “20180205144820622”
}

  1. On crée un tiddler nommé $:/B quelconque, avec le texte que l’on voudra transclure.
  2. On crée un tiddler nommé B :

{
“text”: “{{||A}}”,
“bag”: “default”,
“revision”: “15”,
“type”: “text/vnd.tiddlywiki”,
“title”: “B”,
“tags”: “”,
“modified”: “20180208142902581”,
“created”: “20180208140211505”
}
De cette façon $:/B ce transclue dans B et si je clone le tiddler B en le renomme C et que je clone le tiddler $:/B en le renomme $:/C. $:/C ce transclue automatiquement dans C.

Merci beaucoup les gars !!! :grinning:

PS : Sylvain, si tu peux nous apprendre comment écrire en mode code sur le forum, je modifierais mon post avec joie :wink:


#12

Tu peux consulter l’autre post ouvert par @Eskha. En gros c’est comme avec TiddlyWiki :wink: