Динамически изменять поле заголовка (или просто заголовок в макросе вкладок) в 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. Я хотел бы изменить заголовок, в идеале не вставляя слишком много шаблонов в тиддлеры.


person mwchase    schedule 23.11.2016    source источник


Ответы (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>

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

person mwchase    schedule 23.11.2016