Using <$list> widget to generate table rows

115 views
Skip to first unread message

Louis Davout

unread,
Aug 9, 2021, 9:46:15 AM8/9/21
to TiddlyWiki

I'm trying to use the <$list> widget generate table rows. One is this even possible. Two How? Here is simplified version of code I've tried.

\define davout-list(levels: "1,3,5")
| ! Level | ! Blah |
<$list filter="[[$levels$]split[,]]" variable="level">
| <<level>> | Blah |
</$list>
\end

\define davout-list2(levels: "1,3,5")
| ! Level | ! Blah |
<$list filter="[[$levels$]split[,]]" variable="level">
| <<level>> | Blah |
<$wikify name=wikifiedRow text=| <<level>> | Blah |>
<<wikifiedRow>>
</$wikify>
</$list>
\end

<<davout-list>>

<<davout-list2>>

The html it generates:
<table><tbody><tr class="evenRow"><th align="center"> Level</th><th align="center"> Blah</th></tr></tbody></table><p>
| 1 | Blah |

| 3 | Blah |

| 5 | Blah |
</p><table><tbody><tr class="evenRow"><th align="center"> Level</th><th align="center"> Blah</th></tr></tbody></table><p>
| 1 | Blah |
&gt; | Blah |&gt;
|


| 3 | Blah |
&gt; | Blah |&gt;
|


| 5 | Blah |
&gt; | Blah |&gt;
|

</p>

It's closing the table and generating <p> tags.
---------------------------------------------------------
A more general question. It's been stated that macros are text substitution not functions that return a value. And they don't "evaluate". I've seen first hand they don't return a value, but they do seem to at least execute some code. For example they do call other macros:

\define a()
<<b "here">>
\end

\define b(where)
$where$
\end

<<a>>

produces:
here

So what are the rules for what macros will and will not "execute"?

Thanks.

Louis Davout

unread,
Aug 9, 2021, 9:53:34 AM8/9/21
to TiddlyWiki
\define davout-list(levels: "1,3,5")
| ! Level | ! Blah |
<$list filter="[[$levels$]split[,]]" variable="level">

| <<level>> | Blah |

</$list>
\end

Removes the <p> tags but makes each row into its own table.

Louis Davout

unread,
Aug 9, 2021, 5:02:44 PM8/9/21
to TiddlyWiki
Well this works:

\define davout-list(levels: "1,3,5")
<table>
<tr><th>Level</th><th>Blah</th></tr>

<$list filter="[[$levels$]split[,]]" variable="level">
<tr><td><<level>> </td><td>Blah</td></tr>
</$list>
</table>
\end

TW Tones

unread,
Aug 12, 2021, 2:33:37 AM8/12/21
to TiddlyWiki
I see you were talking to yourself, 

Are you fine now?

Personally I prefer using the html table tags especially when I use a list inside the table to generate rows and another for columns.

Regards
Tones

Jeremy Ruston

unread,
Aug 12, 2021, 11:19:38 AM8/12/21
to tiddl...@googlegroups.com
Hi Louis

As you've discovered, the wikitext table syntax is very simple, and doesn't support dynamic generation. The philosophy of TiddlyWiki's wikitext syntax is to provide easy-to-type shortcuts for common idioms that expand to sequences of widgets. In designing the wikitext syntax we are able to favour simplicity over flexibility because it is always possible for users to drop down into "raw widgets" to get the finest possible degree of control.

One can visualise the various elements of wikitext as a hierarchy of complexity/flexibility:

* Wikitext syntax is simple, easy to type and remember
* Macros add dynamic effects with the simplest possible syntax (because there are no closing tags to get mismatched)
* Widgets (and HTML) provide the base level of elementary primitives

Best wishes

Jeremy.


On 9 Aug 2021, at 22:02, Louis Davout <davou...@gmail.com> wrote:


--
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 tiddlywiki+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/c17202a8-3ee6-47b5-a9e1-d5f4b2f04563n%40googlegroups.com.

springer

unread,
Aug 12, 2021, 6:16:29 PM8/12/21
to TiddlyWiki
Louis, responding not directly to your question, but to the kind of task that seems to lie behind it:

if you're trying to display tables with rows that meet filter conditions, you might be well served by Mohammad's Shiraz plugin, which offers dynamic tables with many lovely features. 

If you stand on Mohammad's shoulders, your tiddlywiki time is freed up to solve more nuanced problems!

-Springer

Reply all
Reply to author
Forward
0 new messages