Hi Jeremy, On Friday, December 6, 2013 3:28:48 PM UTC+8, Jeremy Ruston wrote: > > Hi Vincent > > Good to hear from you, and delighted you're interested in TW5. > > I think my TWtcalc plugin can help on this (see >> http://twtable.tiddlyspace.com/#TWtcalc--Example--IF_and_COUNT for an >> example). It has a simple parser that recognizes predefined function names >> (aliases possible) and does calculations according to their definitions. It >> is currently equipped with about 15 predefined functions, including sum, >> avg, etc., and is quite easy to extend. Currently it works on TiddlyWiki >> tables using the OpenOffice.calc/Excel like syntax, but I think to >> accomplish what's mentioned in the ticket, the followings would do: >> > > Your TWtcalc is a lovely plugin, a nice simple idea very fully executed. >
Thanks for the comment. > > > >> >> 1. take the core functions (parser and evaluator) that work on plain >> text, maybe modify the syntax analyzer to work with the fields things; >> 2. take the predefined function set, reduce/modify to work with >> fields; >> 3. design the syntax and modify the codes that handles fields to make >> use of the functions taken in step 1 (most likely only one is needed, the >> TWtcalc.evaluate(txt, start [,...]) function) >> >> Step 1 and 2 are easy for me, just need to know how to take values from >> fields. If some one can do step 3 then it should be done. >> > The big issue for me around these calculations is selecting the best > syntax. Currently TW5 already has two languages built-in: JavaScript > itself, and the filter syntax. I've been reluctant to add a different > syntax for general numeric calculations. > > The tension with the design of the filter syntax is that the more > complicated it gets, the more one ends up thinking that it might as well > have been JavaScript. So, my design goal for the filter syntax is to be > simple and expressive, and I'm not worrying too much whether or not it's > complete enough. > > That should be fine. Maybe a minor modification to the filter syntax would do? I can look into that when I have time (late Jan probably). > So, two options for proceeding might be be: > > 1) Port the existing TWtcalc, complete with the existing formula syntax, > as a new TW5 plugin > 2) Work together on extending the TW5 filter syntax to encompass numeric > operations, and the plumbing necessary to make spreadsheet functionality be > native to the core > > The big difference is that (1) is a fairly self-contained job while (2) > will require much more understanding of the existing internals of TW5. > > I would do 1) for sure, that's been planned. For 2) I will look into the filter syntax and figure a way. But I am not sure whether a spreadsheet functionality shall be native to the core or not. I would think it better as an addition rather than in the core, because it can grow quite large as more and more functions are defined. Have fun! Vincent Best wishes > > Jeremy > > > >> Have fun! >> Vincent >> >> >> >> On Wednesday, December 4, 2013 10:02:46 PM UTC+8, Jeremy Ruston wrote: >> >>> Hi Jeff >>> >>> None of that is implemented today, but is planned. Your examples are >>> very useful, so I've transferred them to a ticket: >>> >>> https://github.com/Jermolene/TiddlyWiki5/issues/254 >>> >>> Many thanks >>> >>> Jeremy. >>> >>> >>> On Tue, Dec 3, 2013 at 9:34 PM, <[email protected]> wrote: >>> >>>> In TW5, is it possible to sum the values of a field from multiple >>>> tiddlers? >>>> >>>> Something like: >>>> title: Project Finances >>>> >>>> [tag[expense]sum[cost]] --> 150 >>>> >>>> --- >>>> >>>> title: Expense A >>>> tag:expense >>>> cost:100 >>>> >>>> --- >>>> >>>> title: Expense B >>>> tag:expense >>>> cost:50 >>>> >>>> >>>> In general, is there (will there be) operators for (numerical) fields >>>> such as sum, average, greater than, less than, equal to, etc? >>>> >>>> Just throwing out more ideas that come to mind: >>>> >>>> title: Project Finances >>>> Budget:200 >>>> expenseA:100 >>>> expenseB:50 >>>> expenseC:200 >>>> >>>> >>>> {{expenseA + expenseB}} --> 150 >>>> >>>> or >>>> >>>> [title[Project Finances]sum[expenseA, expenseB]] --> 150 >>>> >>>> or >>>> >>>> [title[Project Finances]sum[fieldsearch[expense*]]] --> 350 >>>> >>>> or >>>> >>>> [title[Project Finances]avg[expenseA, expenseB]] --> 75 >>>> >>>> or >>>> >>>> [title[Project Finances]calc[Budget - sum[expenseA, expenseB]]] --> 50 >>>> >>>> -Jeff >>>> >>>> >>>> -- >>>> 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. >>>> >>> >>> >>> >>> -- >>> Jeremy Ruston >>> mailto:[email protected] >>> >> > > > -- > Jeremy Ruston > mailto:[email protected] <javascript:> > -- 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.

