Great thread. Thanks, Joe. And thanks, Xavier. What I find most interesting about TiddlyWiki is that someone like Joe and someone like me can work with it. Joe has a clearly different approach to learning and understanding than I do. I never looked at the <<list-links>> code, just used it for a while until it didn't do what I wanted, and poked around and discovered <$list>, and used the dox and examples on tiddlywiki.com to get it to work (sort of).
FWIW: I may have a different need, since I am now frequently teaching TiddlyWiki, but this term I gave up teaching <<list-links>> and moved students into using <$list filter=...> right away. Like Xavier, I agree that filters are key, and help folks understand the core aspects of Tiddlywiki. Most of my students are non-programmers, but many have html experience. It is always interesting to have computer scientists in my class, as the way I have them approach TW is so different than how they are taught programming and languages in the CS department. About half-way into the semester, they begin to see that there is a language under TW, and that they can get to that language if they want to. I'm not sure that there are platforms other than TiddlyWiki that offer this possibility. Anyway, thanks Joe for starting off an interesting thread... //steve. On Saturday, March 10, 2018 at 8:08:52 PM UTC-5, PMario wrote: > > On Saturday, March 10, 2018 at 7:25:48 PM UTC+1, Joe Armstrong wrote: >> >> ... >> >> 2) widgets - what do they return? how are they evaluated? >> > > Widgets are the basic building blocks in TW. The whole UI is based on > widgets. > > The TiddlyWiki UI starts with a transclusion of the PageTemplate tiddler. > Which simply speaking is a "list all tiddlers that are tagged: > $:/tags/PageTemplate" + some navigation handling using the NavigatorWidget > > TW wikitext is parsed and transferred to widgets, which produce the > html-dom, that the browser can use. more about this later. > > ---------------- > > A simpler example: > > Macro definitions are converted to SetWidgets > and > macro calls are converted to a MacroCallWidgets > > eg: if you go to the *TW-prerelease edtion* you can see the pare-tree and > the widget-tree. The prerelease contains some development elements, that > are missing at tiddlywiki.com > > - open: https://tiddlywiki.com/prerelease/ > - create a new tiddler eg: test-macro > - enter: \define hello() hello world > - In the edit toolbar you see: > > - *select parse-tree* and you'll see: > > > [ > { > "type": "set", > "attributes": { > "name": { > "type": "string", > "value": "hello" > }, > "value": { > "type": "string", > "value": "hello world" > } > }, > "children": [], > "params": [] > } > ] > > > -* now add the macro call* with: <<hello>> > > - you'll get: > > > [ > { > "type": "set", > "attributes": { > "name": { > "type": "string", > "value": "hello" > }, > "value": { > "type": "string", > "value": "hello world" > } > }, > "children": [ > { > "type": "macrocall", > "name": "hello", > "params": [], > "isBlock": true > } > ], > "params": [] > } > ] > > > These internal structures are created by the TW parsers > <https://github.com/Jermolene/TiddlyWiki5/tree/master/core/modules/parsers>. > They produce the parse-tree. > > This parse-tree is used by the TW renderer to produce the HTML output, > that the browser can use. > Every widget has a widget.render() function. ... > > The module render.js > <https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/startup/render.js> > > is a startup module, that kicks off the whole parsing and rendering > process for eg: the PageTemplate > <https://github.com/pmario/TiddlyWiki5/blob/413894e3e78721b956357312df24b640810f1439/core/modules/startup/render.js#L55> > . > > A little bit earlier in the startup mechanism, the RootWidget is created > <https://github.com/Jermolene/TiddlyWiki5/blob/cb28065d8e2aa6fde2d730eaf7aaf5b08a50802e/core/modules/startup/startup.js#L94>. > > It holds a reference to the browser DOM document element, which allows all > widgets, to modify the DOM. > > hope that makes sense > have fun! > mario > > > -- 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+unsubscr...@googlegroups.com. To post to this group, send email to tiddlywiki@googlegroups.com. Visit this group at https://groups.google.com/group/tiddlywiki. To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/6df4e261-e159-4259-8853-4b16a251e53b%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.