(core) Ignore leading whitespace in formulas, and strip out leading '=' sign users might add

Summary:
This addresses two issues, differently:
- For a formula with leading whitespace, like " 1+1", it is stored as is, but
  is fixed to work (it should be valid Python, and whitespace is only stripped out
  at parsing time to avoid intentation errors caused by the way it gets parsed)
- For a formula with a leading equals-sign ("="), it is stripped out on the
  client side before the formula is stored. Grist documentation uses leading
  "=" to indicate formulas (because UI shows an "=" icon), and Excel formulas
  actually contain the leading "=", so it is a common mistake to include it.

Test Plan: Added new test cases

Reviewers: jarek

Reviewed By: jarek

Differential Revision: https://phab.getgrist.com/D3873
This commit is contained in:
Dmitry S
2023-04-24 23:01:26 -04:00
parent d6abe6a737
commit b4cc519616
6 changed files with 42 additions and 8 deletions

View File

@@ -614,6 +614,9 @@ export async function enterCell(...keys: string[]) {
/**
* Enter a formula into the currently selected cell.
*
* You can insert newlines by embedding `${Key.chord(Key.SHIFT, Key.ENTER)}` into the formula
* text. Note that ACE editor adds some indentation automatically.
*/
export async function enterFormula(formula: string) {
await driver.sendKeys('=');
@@ -621,7 +624,7 @@ export async function enterFormula(formula: string) {
if (await driver.find('.test-editor-tooltip-convert').isPresent()) {
await driver.find('.test-editor-tooltip-convert').click();
}
await driver.sendKeys(formula, Key.ENTER);
await sendKeys(formula, Key.ENTER);
await waitForServer();
}