Open xremming opened 2 years ago
I like this!
Internally, we use MathJs, which does support ternary operators. So it should be possible to add some grammar for it, in the parser file.
Happy for PRs 🙂
I've been on quite a roll with my own project and this would become very handy for me, so let's see if I will make PR. 🤔
Awesome!
Ourt of interest, are you able to provide any real world uses for the ternary?
I can think of things like this:
// Roll a d6 where greater than or equal to 5 is success
// If success, then return 2, otherwise return 1
1d6>=5 ? 2 : 1
Or perhaps even:
1d6>=5 ? 2d10 : 2d3
Maybe even something like this (Although it could conflict with some modifiers):
(2d10 * 3) > 250 ? 300 : 100
I can imagine a lot of benefits with this, checking for success before performing another roll is a very common action in a lot of tabletop rpgs. Something like checking if an attack hits in dnd 5e with (d20>10) ? d8 : 0
.
Unfortunately, with how comparisons are implemented, something like (d20+4>10)
does not work. However, that seems outside the scope of this issue.
I went ahead and made the quick change necessary and put up a pull request.
Is your feature request related to a problem? Please describe. In the tool I'm writing currently I use mustache for user side templating and this lib to "evaluate" the values. For some expression it would be easier and cleaner to write and use them if this lib would support ternary operations.
Describe the solution you'd like Support writing
a ? b : c
which returnsb
ifa
is non-zero andc
ifa
is zero. With this the comparison operators should also work with just naked numbers so that the following expression would also work1>0 ? 100 : 0
.Describe alternatives you've considered I can always write my own parser on top of this lib and I might have to do that at some point anyways. 😅