I am having trouble understanding how macrocalls work in buttons that set fields to values resulting from a macro being called with transcluded text as a parameter.
Can anyone explain how to get the desired behaviour for the button?
Here is the example javascript macro:
/*\
title: mymacros/makelower.js
type: application/javascript
module-type: macro
\*/
/*
Macro to make a string lowercase
*/
"use strict";
exports.name = "makelower";
exports.params = [{name: "input"}];
exports.run = function(input) {
const characters = input.toLowerCase()
return characters;
};
In a is a tiddler called demolower:
<$edit-text tiddler=demolower field=input/>
Typing in Hello World into the above input field results in the following outputs for the following code:
<$transclude $variable="makelower" input={{!!input}}/>
gives: hello world
<<makelower input:{{demolower!!input}} >>
gives: Hello World
<$button>
<$action-setfield $tiddler=demolower lowered=<<makelower input:"Hello World">> />
Set field "lowered" to lowercase version predefined text
</$button>
lowered field: hello world
<$button>
<$action-setfield $tiddler=demolower lowered=<<makelower {{!!input}}>> />
Set field "lowered" to lowercase version of entered input
</$button>
lowered field: Hello World