Not a macro, but I wrote a simple plugin to do essentially this.
https://mklauber.github.io/tw5-plugins/#%24%3A%2Fplugins%2Fmklauber%2Fmath.js
which you can install from here https://mklauber.github.io/tw5-plugins/ It
works like this
<$calc> {{some collection of wikitext that renders to an expression </$calc>
<$calc> 2 * 5 + {{SomeTiddler!!value1}}</$calc>
You can even do something with lists.
Total = <$calc> 0 <$list filter="[tag[Purchase]]"> +
{{!!cost}}</$list></$calc> This will add up the total of all cost fields
on all tiddlers tagged Purchase. The leading 0 is to help with the initial
plus sign that's part of the list output.
On Saturday, June 25, 2022 at 4:44:56 PM UTC-4 [email protected] wrote:
> I've never been in love with the approach of using a javascript macro to
> do basic arithmetic.
>
> Since it is on my mind, I'm turfing what I did before and redoing into
> something that can do way more complex math, but still in a way that feels
> natural.
>
> If you have suggestions, lob them over. Eventually, I'll lob a TiddlyWiki
> instance out on the web for folk to play with.
>
> Eventually, this will be one macro (TiddlyWiki au natural) to handle
> equation solving (i.e. show me the results of an equation) and equation
> building (a little bit like a calculator.)
>
> [image: Screenshot 2022-06-25 5.38.42 PM.png]
>
> On Monday, March 14, 2022 at 10:44:08 PM UTC-3 Charlie Veniot wrote:
>
>> I just updated the TiddlyWiki. The related javascript macro, I had
>> locked it down to make sure nothing other than `"0123456789 ()+-*/%"`
>> would be accepted, but I had totally forgotten about decimals.
>>
>> So now the javascript is locked down to make sure nothing other than
>> `"*0123456789
>> .()+-*/%*"` is accepted.
>>
>> So now this works:
>>
>> `<<EvalThis "{{{ [[25.9]] }}} * ( 1 + ( {{{ [[15%]removesuffix[%]] }}} /
>> 100 ) )">>`
>> i.e.
>> `<<EvalThis "{{ item_price }} * ( 1 + ( {{( [[tax_rate]removesuffix[%]]
>> })} / 100 ) )">>`
>>
>> On Saturday, March 12, 2022 at 2:51:47 PM UTC-4 Charlie Veniot wrote:
>>
>>> After a bit of discussion over on TiddlyTalk
>>> <https://talk.tiddlywiki.org/t/what-are-current-options-for-plain-arithmetic/2699/12>,
>>>
>>> I've resolved a security issue and feel good enough about the little
>>> solution for lengthy/complex (but primitive only) arithmetic expressions.
>>>
>>> In this sample TiddlyWiki instance
>>> <https://cjveniot.neocities.org/TiddlyWikiEvalThisMacro.html>, you'll
>>> find the following two tiddlers needed:
>>>
>>>
>>> - Eval.js (the javascript eval function, locked to only allow the
>>> characters (excluding the double quotes) "0123456789 ()+-*/%"
>>> - EvalThis tiddler with the EvalThis macro.
>>>
>>>
>>> Although I can't stand javascript, I am not fussy about TiddlyWiki
>>> filter operations for lengthy/complex basic arithmetic, and not really fond
>>> of bringing in any of the powerful plugins out there when I don't need that
>>> much oomph.
>>>
>>> Some sample macro references:
>>>
>>> `
>>> <<EvalThis "(100 + 2) / (9 - 1)">>
>>>
>>> <<EvalThis "59 % 3">>
>>>
>>> <<EvalThis "5**3">>
>>>
>>> <<EvalThis "( {{!!a}} * {{!!b}} ) / 2">>
>>>
>>> <$list filter="[range[25]]"> {{!!title}} / 2 = <<EvalThis "{{!!title}} /
>>> 2">><br> </$list>
>>> `
>>>
>>>
>>>
>>>
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/tiddlywiki/dd50feb8-db77-4b1d-adbd-29c2addc3bfdn%40googlegroups.com.