Динамически изменять поле заголовка (или просто заголовок в макросе вкладок) в TiddlyWiki

Я собираю несколько шаблонов TiddlyWiki, и я столкнулся с чем-то, что было бы неплохо иметь, но я не уверен, возможно ли это на самом деле.

У меня есть несколько тиддлеров, которых я включаю в другой тидлер, используя tabs макро. С каждым тидлером связан один из двух тегов. Я хотел бы добавить фрагмент текста к caption в представлении вкладок, в зависимости от того, какой тег связан.

У меня нет сильных предпочтений для того, чтобы сделать это, добавив какой-то обратный вызов для редактирования caption на сохранение, то, что как-то вычисляет желаемое caption на лету, изменяя вызов tabs макрос для пересчета caption при рендеринге или каким-либо образом вызывая шаблоны для расчета caption поле.

Я не нашел ничего перспективного в просмотре документации, но, возможно, я просто не понял, что имеет отношение к моей проблеме. Я считаю, что это часто случается.

Например, я уверен, что могу написать условные выражения в зависимости от того, существуют ли теги, но я не вижу способа интерполировать текст в caption поле на основе любого рода вычислений вообще.

Для справки, вот мои текущие вызовы макросов:

<<tabs [list[]] state:$:/state/tabPeriod template:PeriodTemplate>>

<<tabs [list[$(currentTab)$]] state:$:/state/tabEvent class:"tc-vertical" template:"EventTemplate">>

<<tabs [list[$(currentTab)$]] state:$:/state/tabScene template:"SceneTemplate">>

Все эти строки взяты из разных шаблонов, которые просто извлекают список тиддлеров и превращают их в закладки, используя предоставленный шаблон. В настоящее время вкладки подписаны с помощью тиддлера caption, если определено, и отступить к title, Я хотел бы изменить заголовок, в идеале, не вставляя слишком много шаблона в тиддлеры.

1 ответ

Решение

Я понял, что мне нужно сделать по-другому: я определил пользовательский макрос на основе макроса вкладок, добавил логику, и теперь он работает нормально. Я просто изменил текущее содержимое логики заголовка на:

<$set name="tv-wikilinks" value="no">
<$transclude tiddler=<<currentTab>> field="caption">
<$macrocall $name="currentTab" $type="text/plain" $output="text/plain"/>
</$transclude>
<$list filter='[<currentTab>tag[light]]'>
○
</$list>
<$list filter='[<currentTab>tag[dark]]'>
●
</$list>
</$set>

Я не уверен, правильно ли я использую виджет списка, но он работает.

Другие вопросы по тегам