Brilliant as always, Eric. :)
I wanted to wait and confirm that the order was correct before offering a
recursive macro, since the TOC macro does allow customizing the sorting for
different branches.
Given your code, a button could look something like this:
<$button>export report
<$wikify name="export-filter" text=<<toc-list here:"Contents">> >
<$action-sendmessage $message="tm-download-file"
$param="$:/core/templates/exporters/StaticRiver" exportFilter=<
<export-filter>> filename="report.html">>/>
</$wikify>
</$button>
On Saturday, June 20, 2020 at 3:13:06 PM UTC+2, Eric Shulman wrote:
>
> On Saturday, June 20, 2020 at 5:04:11 AM UTC-7, Saq Imtiaz wrote:
>>
>> @Rachel there are several ways to do this and a lot depends on things
>> like whether you expect to add more top level tiddlers under Contents (like
>> a #6 after 1-5), and whether the hierarchy only goes one level deep or
>> further.
>> Assuming the structure of the Contents tiddler is fixed and only goes
>> down one level, the following filter will identify your tiddlers:
>>
>
> Here's a little macro that will "walk" a TOC tree of any depth and return
> a flat list of tiddler titles, in the order they occur in the TOC:
> \define toc-list(here,exclude,max,level:"1")
> <$list filter="""[tag[$here$]] $exclude$ -[[$here$]]""">
> <$text text="[["/><<currentTiddler>><$text text="]]"/><br>
> <$reveal default="$level$" type="nomatch" text="$max$">
> <$macrocall $name="toc-list" here=<<currentTiddler>> max="$max$"
> exclude="""$exclude$ -[[$here$]]""" level={{{ [[$level$]add[1]] }}}/>
> </$reveal>
> </$list>
> \end
>
> To see the list, starting with a top-level of tiddlers tagged with
> "Contents", simply write:
> <<toc-list here:"Contents">>
> * The "exclude" param is automatically calculated internally to prevent
> infinite recursion if there are any circular references. It can also be
> provided as an explicit input parameter in the macro call to prevent
> specific branches of the tree from being traversed.
> * The "max" param is optional and limits the depth of traversal. It works
> with the "level" param which is calculated internally to track how deep the
> traversal has gone.
>
> Thus, if you want to get a list that excludes tiddler tagged as "Task",
> "ToDo" or "Done", you could write:
> <<toc-list here:"Contents" exclude:"-[[Task]] -[[ToDo]] -[[Done]]">>
>
> and if you want to limit the depth to 3, you could write:
> <<toc-list here:"Contents" max:"3">>
>
> Of course, this is only the first step in the process of exporting the
> tiddlers, but it does produce a list in the correct order. The remaining
> task is to use this result as input to an export process.
>
> For example, you could produce this list in a tiddler, and then -- as Saq
> has already suggested, simply copy/paste the result into the
> $:/AdvancedSearch Filter input field. Then press the "export" button and
> choose "static HTML".
>
> It should also be possible to automate those steps so you can just press a
> button and get the desired output with one click. I'll fiddle about a bit
> and see if I can provide a simple bit of button/action syntax that does
> this. Right now I'm not feeling very well, so it will have to wait a bit
> for me to get some rest.
>
> -e
>
>
>
--
You received this message because you are subscribed to the Google Groups
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/tiddlywiki/894a356f-f072-4058-bf34-f146b63798c1o%40googlegroups.com.