I'm attempting magick. But more elegant magick. Three tiddlers where only 
two should be needed is one too many.

What we lack is a way to specify whether TW should 'recook' transcluded 
text (i.e. re-wikify it).

<$transclude tiddler="myRawCode" recook="true">

The default would be false. However if cook is true, then TW should insert 
the transcluded content and then continue wikification starting BEFORE the 
transcluded content, not AFTER.

Essentially this is akin to the 'quote' / 'eval' issue from LISP. But it's 
more complicated in TW because we're dealing with at least three languages: 
javascript, html, wikitext (markup). Wikitext contain a macro language, 
which counts as a fourth language. On top of that we have the shadow 
language of CSS, so there are least five language (at least).

It's far too much to comprehend without better documentation. Instead of 
purposeful coding, based on a comprehensible architecture, non-TW-gurus 
(beginners, intermediate users) are reduced to voodoo-coding, 
trial-and-error hacking, in a word: magick. Chaos magick in fact.

So, maybe what TW5 needs is an explicit tiddler type for MACROS, so that 
when we transclude a tiddler of that type then those macros are defined in 
the context of the current tiddler. But I'm pretty sure that approach has 
some major shortcomings too. For example, suppose we want to store macros 
in fields, rather than in the main body of the tiddler. Fields have no 
content type attribute.

The problem appears to be that TW is a special-purpose architecture that 
users must kludge-hack into more general usage. Instead TW should be a 
general architecture with no-brainer default behaviors catering to casual 
users. TW doesn't 'account' for it's language stack, it simply indulges in 
it. For example, content is not 'typed' (except for the limited number of 
tiddler types provided). There is no general way to query nugget of content 
to determine which of the five languages (six if you count 'raw text' as a 
language type) it is written in. Everything must be determined from 
context, but contexts (containers such as tiddler fields) can contain 
different source languages. So context fails.

TW feels 'un-formal'. It's dazzlingly attractive, addictively fun and 
perfect for casual users with no great dreams, but it seems 'incorrect', in 
a word. It lacks 'closure'. It's strives to be 'self-reflective' but fails.

I'm not sure if I should expect post-beta TW5 to address any of these 
issues, and I certainly can't wait 25 years for TW6.

dr

On Friday, January 3, 2014 2:39:40 PM UTC-5, David Richards wrote:
>
> Tiddler "A" contains:
>
> \define mysamplemacro(name:"Bugs Bunny",address:"Rabbit Hole Hill")
> Hi, I'm $name$ and I live in $address$
> \end
>
> Tiddler "B" contains:
>
> {{A}}
> <<mysamplemacro>>
> <<mysamplemacro "Donald Duck">>
> <<mysamplemacro "Mickey Mouse" "Mouse House">>
>
> That doesn't work. How do I 'execute' the macro definition stored in A so 
> that it is available to B?
>
> dr
>
>
>
>
>
>
>
>

-- 
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/tiddlywiki.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to