HI Alain

TiddlyWiki uses it’s own CommonJS compatible module loader. The $tw global is 
explicitly exposed to loaded modules:

https://github.com/Jermolene/TiddlyWiki5/blob/master/boot/boot.js#L652 
<https://github.com/Jermolene/TiddlyWiki5/blob/master/boot/boot.js#L652>

$tw is also exposed to the JavaScript global namespace, but that is not 
directly visible to TW modules.

Best wishes

Jeremy.

> On 22 Mar 2016, at 23:38, Alain Dutech <[email protected]> wrote:
> 
> Thanks, it's clearer now.
> In fact, it's a stupid error that led me to wonder about $tw.
> While testing about it in my module, I tried
> console.log("__INIT: $tw="+$tw );
> and I had an error, and assumed wrongly I could not "see" $tw. But the error 
> was simply that $tw could not be cast into a string (as asked by the '+'). If 
> I write
> console.log("__INIT: $tw=",$tw );
> it works....
> 
> So I got confused, for no real reason. All my fault !!!
> 
> Alain
> 
> On Tue, Mar 22, 2016 at 9:32 PM, BJ <[email protected] 
> <mailto:[email protected]>> wrote:
> It depends on what you plugin does. In each tiddler you  need to put what 
> type of module the javascript is so that tiddlywiki can load it at the 
> correct time - generally try and copy what others have done.
> 
> $tw is alway visible - it is a global variable.
> 
> If you have a particular functionality then I may be able to be more 
> specific, you can experiment and see what works.
> 
> 
> 
> On Tuesday, March 22, 2016 at 6:22:32 PM UTC, Alain Dutech wrote:
> Thanks BJ.
> 
> I have looked a bit at boot.js and various startup modules. It is a bit more 
> clear (especially how $tw is created and populated, but not perfrect. Still, 
> I cannot say when the $tw can be used. 
> 
> Specifically, if a create a new module with the classical
> `(function(){ ... `
> 
> I will not be able to use `$tw.utils`. What should I do to "see" $tw ? 
> If I call my module from a Widget, I could pass my module the $tw variable ? 
> Other ways ?
> 
> And, to go back to filter.js
> For example, $tw is used inside the fonction
> exports.compileFilter = function(filterString) {
> 
> Is it because filters.js is loaded through $tw.modules.applyMethods() that 
> $tw is in its scope ?
> 
> Alain
> 
> 
> 
> On Sun, Mar 20, 2016 at 8:22 PM, BJ <[email protected] <>> wrote:
> HI Alain,
> the modular structure of tiddlywiki is more extensive that 'require'.
> 
> There is some documentation here
> 
> tiddlywiki.com/dev. <http://tiddlywiki.com/dev>
> 
> but mostly you can read the code! but ask questions when you get stuck.
> 
> The $tw structure is populated in a number of step during the start up. It is 
> defined at the begin of the boot and some basic functionality is added to it 
> in boot.js. Alot of extra stuff in added to it in 
> 
> $:/core/modules/startup/load-modules.js
> 
> javascipt modules in tiddlywiki can have a module-type that allow them to be  
> add to $tw thru $tw.modules.applyMethods(). (including the filter functions)
> 
> Some places use 'this' instead of $tw, may be for some future expansion of tw?
> 
> all the best
> 
> BJ
> 
> 
> On Sunday, March 20, 2016 at 5:16:22 PM UTC, Alain Dutech wrote:
> 
> Hi,
> this must be a bunch of stupid questions but I'm still learning the logic of 
> javascript.
> 
> 1) when is the global $tw variable available?
>   - what "module" are required for it to be available ?
>   - does it become available after  
> `require("$:/core/modules/widgets/widget.js");` ? Why ?
>   - how come $tw can be used in the filter.js module ? as show below
> 
> exports.getFilterOperators = function() {
>     if(!this.filterOperators) {
>         $tw.Wiki.prototype.filterOperators = {};
>         $tw.modules.applyMethods("filteroperator",this.filterOperators);
>     }
>     return this.filterOperators;
> };
> 
> Is it because getFilterOperators is defined inside "exports" ??
>  
> 2) To use the filter API, and in particular the filterTiddler function 
> defined in filters.js (see below), must I "require" filter.js, or widget.js, 
> or wiki.js or ???
> 
> exports.filterTiddlers = function(filterString,widget,source) {
>     var fn = this.compileFilter(filterString);
>     return fn.call(this,source,widget);
> };
> 
> 3) the `this.wiki` of Widgets is initialized through the option parameters in 
> the Widget constructor.
> so all the function exported by wiki.js are available through this.wiki ?
> 
> 4) Is there like a list of "public" function available through $tw, $tw.utils 
> and this.wiki ? I am trying to guess by reading through the various *.js 
> modules, but I'm my knowledge of JS make this task a bit tedious...
> 
> Thanks for any hint or explanations or info.
> Alain
> 
> -- 
> You received this message because you are subscribed to a topic in the Google 
> Groups "TiddlyWikiDev" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/tiddlywikidev/Ul3ezJU98QA/unsubscribe 
> <https://groups.google.com/d/topic/tiddlywikidev/Ul3ezJU98QA/unsubscribe>.
> To unsubscribe from this group and all its topics, send an email to 
> [email protected] <>.
> To post to this group, send email to [email protected] <>.
> Visit this group at https://groups.google.com/group/tiddlywikidev 
> <https://groups.google.com/group/tiddlywikidev>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/tiddlywikidev/5fcc3488-48af-4159-b267-f3a62fcf8a69%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/tiddlywikidev/5fcc3488-48af-4159-b267-f3a62fcf8a69%40googlegroups.com?utm_medium=email&utm_source=footer>.
> 
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> 
> 
> -- 
> You received this message because you are subscribed to a topic in the Google 
> Groups "TiddlyWikiDev" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/tiddlywikidev/Ul3ezJU98QA/unsubscribe 
> <https://groups.google.com/d/topic/tiddlywikidev/Ul3ezJU98QA/unsubscribe>.
> To unsubscribe from this group and all its topics, send an email to 
> [email protected] 
> <mailto:[email protected]>.
> To post to this group, send email to [email protected] 
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/tiddlywikidev 
> <https://groups.google.com/group/tiddlywikidev>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/tiddlywikidev/215cb573-7850-41ca-8cc5-99c49095c17e%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/tiddlywikidev/215cb573-7850-41ca-8cc5-99c49095c17e%40googlegroups.com?utm_medium=email&utm_source=footer>.
> 
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "TiddlyWikiDev" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To post to this group, send email to [email protected] 
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/tiddlywikidev 
> <https://groups.google.com/group/tiddlywikidev>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/tiddlywikidev/CAFF9YEEOc00SLW4GU38rgR3X0wmnWFSvOsC8RPrm7L6%3DC9HkiA%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/tiddlywikidev/CAFF9YEEOc00SLW4GU38rgR3X0wmnWFSvOsC8RPrm7L6%3DC9HkiA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWikiDev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/tiddlywikidev.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywikidev/20F1BF49-EC86-41B3-A634-B93CAE243B2C%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to