Re: [Talk TW] [Google Group (Read Only)] [tw5] dynamically building a string by concatenation in a macro

2022-01-23 Thread Brian Theado
Jeremy,

That is a very enlightening way of explaining it. I wasn't sure where in
the docs this exact explanation would fit, but I did make a PR at
https://github.com/Jermolene/TiddlyWiki5/pull/6417 which adds warnings
about the non-recursive nature of attribute value processing.

On Sun, Jan 23, 2022 at 8:41 AM Jeremy Ruston 
wrote:
[...]

> A simple tranclusion like the following works in two distinct steps:
> first, it retrieves the text of the tiddler "foobar", and then it
> recursively processes the retrieved text as if it had appeared in the same
> place as the transclusion. This deals with any wikitext within it.
>
> ```
> {{foobar}}
> ```
>
> In the case of using a transclusion as an attribute we get the same
> actions: it retrieves the text of the transcluded tiddler and then treats
> the text as if it had appeared in the same place as the transclusion, which
> means that it is treated as a literal string.
>
> ```
> 
> ```
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/CAO5X8CxRnvwVPxRqUZD8bHS99ogZD%2BMdgTtyQWY_urp6VB0WNg%40mail.gmail.com.


Re: [Talk TW] [Google Group (Read Only)] [tw5] dynamically building a string by concatenation in a macro

2022-01-23 Thread Jeremy Ruston
My reply used the jargon because I was being brief.

It's really not as irregular as it appears; it's largely a matter of ones terms 
of reference. It's like the difference between an expression and a string 
literal `a=b+c` and `a="b+c"`, if you're familiar with programming languages.

A simple tranclusion like the following works in two distinct steps: first, it 
retrieves the text of the tiddler "foobar", and then it recursively processes 
the retrieved text as if it had appeared in the same place as the transclusion. 
This deals with any wikitext within it.

```
{{foobar}}
```

In the case of using a transclusion as an attribute we get the same actions: it 
retrieves the text of the transcluded tiddler and then treats the text as if it 
had appeared in the same place as the transclusion, which means that it is 
treated as a literal string.

```

```

Best wishes

Jeremy



--
Jeremy Ruston
jer...@jermolene.com
https://jermolene.com

> On 23 Jan 2022, at 12:32, CarloGgi via Talk TW  
> wrote:
> 
> 
> @jeremy thanks for the clarification. So it seems that you can correctly (in 
> the sense of *syntactically* correct) use a macro call as argument of a 
> widget attribute, but functionally fail to have it work as intended. This 
> shows clearly that TW is way too much stuffed with booby-traps and something 
> must be definitely done to make coding easier and safer for the average user. 
> 
> We need a stricter syntax, even at the expense of flexibility, to spare the 
> user from these pitfalls, and we need debugging tools to make him easily 
> single out the problem when syntax doesn't help. We cannot go on relying on 
> knowledge of how the parser and 'wikifier' behaves, it simply cannot be 
> viable if TW is to become widely used as is everybody's wish.
> I'm not a complete beginner in programming, and as a matter of fact I spend 
> 50% of coding time trying to debug obscure malfunctioning that mostly turns 
> out to require a developer-level knowledge of the parser to be worked out: I 
> dare say that this scares away a lot of would-be users after the first, 
> frustrating attempts.
> 
> In the meantime that TW morphs to something less tricky, a huge effort should 
> be done IMHO in bettering the documentation so that the user is aware of the 
> pitfalls left open by its syntax.
> 
> Thanks and regards,
> CG
> 
>> On Saturday, January 22, 2022 at 11:05:03 PM UTC+2 jeremy...@gmail.com wrote:
>> Hi Charlie
>> 
>>> I often say "first things first, consider upgrading", but 5.2.1 has the 
>>> same issue.  So I say stick with what you have if it is working no-worse 
>>> than the latest.
>> 
>> The problem is that the OP is using the macro "templatename" as an attribute 
>> value in the `<$action-createtiddler>` widget, which means that wikitext 
>> content will not be processed ("wikified"), so the transclusion in the macro 
>> is ignored.
>> 
>> The workaround is to use textual substitution within the macro (in other 
>> words the $param$ and $(var)$ syntax).
>> 
>>> As for bug-reporting, that, to me, is a crappy process that needs some 
>>> tender loving care, including a need to update the related circa 2014 
>>> documentation (ReportingBugs).
>> 
>> "Crappy"?
>> 
>> It would be more helpful to explain the specific problems you see, and 
>> perhaps suggest improvements.
>> 
>> Best wishes
>> 
>> Jeremy
>> 
>> 
>>> 
>>> Rock'n roll !
>>> 
>>> 
>>> 
>>> 
>>> 
> On Saturday, January 22, 2022 at 4:31:45 PM UTC-4 CarloGgi wrote:
> It worked like a charm, thanks! 
> If it is really a bug, is there a dedicated place to submit it for 
> analysis?
> 
> My TW version is 5.2.0
> 
> Thanks again and regards,
> CG
> 
>> On Saturday, January 22, 2022 at 9:57:46 PM UTC+2 cj.v...@gmail.com 
>> wrote:
>> TiddlyTalk is a pain.  Let me try pasting that code again so that it 
>> shows okay over there.
>> 
>> ```
>> <$button>
>>  <$action-createtiddler
>>  $basetitle="testTiddler"
>>  $template={{{ [[BASENAME-]addsuffix{!!grammar_class}] 
>> }}} >
>> 
>>  <$action-navigate $to=<>/>
>>  
>>  create new test tiddler
>> 
>> ```
>> 
>>> On Saturday, January 22, 2022 at 3:53:48 PM UTC-4 Charlie Veniot wrote:
>>> I'm thinking you found a bug related to how the action-createtiddler 
>>> handles the $template parameter.
>>> 
>>> In the meantime (i.e. until there is a fix or somebody can explain this 
>>> "feature" going on) ...
>>> 
>>> The following seems to work A-1 for me in my testing (ignore the "pre" 
>>> tags):
>>> 
>>> 
>>> <$button>
>>>  <$action-createtiddler
>>>  $basetitle="testTiddler"
>>>  $template={{{ [[BASENAME-]addsuffix{!!grammar_class}] 
>>> }}} >
>>> 
>>>  <$action-navigate $to=<>/>
>>>  
>>>