Already redid one of my formulas with this and it worked like a charm. Thanks Coda!
Hi @shishir,
First of all, I <3 Coda and am so thankful you made such a great platform. I’ve built business tools on top of Coda that go far beyond what some commercial off-the-shelf products can do. It’s incredible!
That being said (and I realize this may sound pedantic), the current syntax of WithName
is a minor but consistent annoyance. When I use it many times within a complicated formula, it can make the whole thing very hard to read and follow along, as well as make the auto-indenter useless. I understand the issue you mentioned with formula editor order / auto complete as well as mid-expression var-args being outside of your parser’s design. However, have you considered transforming the formula editor before processing? I am unaware of how things work under the hood, so I could be wrong, but could you rewrite a new formula WithNames(xN,xS,yN,yS,E)
behind the scenes (before general parsing) to match your current syntax of WithName(xS,xN,WithName(yS,yN,E))
?
There are three issues I see:
- The overuse of parens and the need to balance them, rendering the auto-indenter useless.
- Brevity and clarify.
- I feel strongly that names should be first. This is much easier to work with. In pretty much all programming languages you write
x = blah blah blah
, notblah blah blah → X
. The reason for this is that 1) variable names are shorter and easier to alight vertically, and 2) it makes it easier to find what the definition of a variable is. I’m guessing you did it this way so someone could write[value].WithName([var], [expression])
, so maybe this was unavoidable.
Here is my suggestion:
WithNames(
name1, s1,
name2, s2,
expr)
rather than either:
WithNames(s1, name1, s2, name2, expr)
or the current:
WithName(s1, name1, WithName(s2, name2, expr))
On a non-sequitur, my other biggest annoyance is that If([x].IsBlank(),"blah",[x].[column])
in a canvas formula returns an error rather than "blah"
when [x]
is blank. This requires annoying workarounds like using a one-row table. I’m surprised Coda hasn’t implemented short-circuiting.
+1 I agree, it’s inconvenient.
I don’t agree or disagree, but I think it is sort of a non-issue. Any programming language has it’s own somewhat peculiar things - and this one really isn’t that bad.
I try to format my CFL in such a way that I can easily see the stucture of my (more complicated) CFL. I have triple or quadripple nested WithNames’ and honestley, I think it is very readable.
The following looks nice ‘on paper’:
WithNames(
name1, s1,
name2, s2,
expr)
but with ‘real code’ that stretches over multiple lines in the editor, the current structure mighg be easier to recognize than this.
If @Coda_hq wants to honor this, the function needs a new name in order to nog break existing code. The suggestion to put the name of the WithName variable first intuitively makes sense to me though.