Macro Help: Transcluding the name of the tiddler the macro was called from as a parameter

59 views
Skip to first unread message

Joe Bush

unread,
Jul 25, 2018, 4:50:45 PM7/25/18
to TiddlyWiki
This is a very short text case for a macro I want to use inside a larger <$list>, so just using the default/currentTiddler won't work then.

\define test( level:3 base:{{!!title}} )
$level$
, $base$
<$reveal type=gteq state="$base$!!depth" text=2>
WHEEE
</$reveal>
\end

<<test level:4>>


The intent is to build a list tree macro where I can pass in a level and have it build a tree that many levels deep. I'm using Reveal for the deeper parts, and am trying to use set the state in the macro parameters. As far as I understand it, I can't just do 

state="$level$"

to get the state because state is a TextReference, which expects to be either a tiddler or a field, not just a simple string. I don't want to have to create state tiddlers manually for each time I want to call this macro, because there'll be a lot of them.

Any ideas?

Joe Bush

unread,
Jul 25, 2018, 5:01:52 PM7/25/18
to TiddlyWiki
The question could be rephrased as "How do I use a Macro Parameter as the a Reveal State?"

Mark S.

unread,
Jul 25, 2018, 5:42:57 PM7/25/18
to TiddlyWiki
I don't believe you can use a dynamic default as you are attempting in your example.

Instead, try:

\define test( level:3 base )

$level$
, $base$

<$reveal type=gteq state="$base$!!depth" text=2>
WHEEE
<
/$reveal>
\end

<$macrocall $name="test" level=4 base={{!!title}}/
>

-- Mark

Joe Bush

unread,
Jul 25, 2018, 6:24:19 PM7/25/18
to TiddlyWiki
Thanks Mark! That does indeed work.

I'd also be interested to know if there's a way to take the depth field out of the equation and use the level parameter instead, since I seem to keep needing that kind of thing.

Mark S.

unread,
Jul 25, 2018, 7:18:38 PM7/25/18
to TiddlyWiki
It depends on what you're doing, and where the equivalent information of "depth" is coming from. You might explain more about your set-up.

Instead of reveal, you might be able to use a listwidget

<$list filter="[...stuff I'm looking for ...count[]prefix[$level$]suffix[$level$]]"> WHEE </$list>

-- Mark

TonyM

unread,
Jul 25, 2018, 8:56:05 PM7/25/18
to TiddlyWiki
Joe,

I am not answering your question but possibly pointing you in another direction.

TiddlyWiki comes with a set of Table Of Content Macros. TiddlyWiki itsself is a great source of inspiration for building on top of tiddlywiki.

In fact you can possibly use the toc macro now.

The TOC macros use recursion. Basically you call a macro which calls itself, using the list widget each time the list runs out it returns to the calling macro (which is itself) and this is how the toc macros dig deep into the tree created by tagging.

Have a search for the macros (start on tiddlywiki.com), or ask further questions here.

Regards
Tony
Reply all
Reply to author
Forward
0 new messages