Buttons to merge streams

Recently I’ve found myself merging a lot of streams tiddlers and needed some fast and efficient ways of doing it without the aid of the Fusion plugin. Thought I’d post my results here in case they’re ever useful to anyone.

Single Tiddler Button

<$button>
<$action-setfield
  $tiddler=<<currentTiddler>>
  text={{{ [<currentTiddler>get-stream-nodes[]] :map[get[text]] +[join[<br><br>]] }}}
/>
<$list filter="[<currentTiddler>get-stream-nodes[]] -[<currentTiddler>]" variable="streamChild">
<$action-deletetiddler $tiddler=<<streamChild>>/>
</$list>
<$action-deletefield $tiddler=<<currentTiddler>> $field="stream-list"/>
Merge This Stream
</$button>

All stream tiddlers in a wiki

<$button>
<$list filter="[all[tiddlers]has[stream-list]!has[parent]]" variable="streamRoot">
<$action-setfield
  $tiddler=<<streamRoot>>
  text={{{ [<streamRoot>get-stream-nodes[]] :map[get[text]] +[join[<br><br>]] }}}
/>
<$list filter="[<streamRoot>get-stream-nodes[]] -[<streamRoot>]" variable="streamChild">
<$action-deletetiddler $tiddler=<<streamChild>>/>
</$list>
<$action-deletefield $tiddler=<<streamRoot>> $field="stream-list"/>
</$list>
Merge All Streams
</$button>

Toolbar button (Appears just in the toolbar of Streams tiddlers)
Tagged $:/tags/ViewToolbar

<$list filter="[<currentTiddler>has[stream-list]]" variable="ignore">
<$button class="tc-btn-invisible">
<$action-setfield
  $tiddler=<<currentTiddler>>
  text={{{ [<currentTiddler>get-stream-nodes[]] :map[get[text]] +[join[<br><br>]] }}}
/>
<$list filter="[<currentTiddler>get-stream-nodes[]] -[<currentTiddler>]" variable="streamChild">
<$action-deletetiddler $tiddler=<<streamChild>>/>
</$list>
<$action-deletefield $tiddler=<<currentTiddler>> $field="stream-list"/>
{{$:/core/images/chevron-down}}
</$button>
</$list>
2 Likes