From 2def803f5a9acf81853484e17b1a65fa7905b442 Mon Sep 17 00:00:00 2001 From: Gunnlaugur Thor Briem Date: Sat, 26 Sep 2026 13:41:47 +0000 Subject: [PATCH] Test whitespace after a number in Excel-mode parseNumber Excel (for Mac 16.114, en-US system) stores "5 ", " 5 ", "1,000 ", "100 % ", "$5 " and "(5) " as numbers when set as a cell's value, but keeps text when a no-break space, tab, line feed or carriage return is next to the number, as in "5", U+00A0, "%". parseNumber refuses the first group and reads "5", U+00A0, "%" as 0.05. --- test/parseValue-excel.spec.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/test/parseValue-excel.spec.ts b/test/parseValue-excel.spec.ts index 197786b..e69c082 100644 --- a/test/parseValue-excel.spec.ts +++ b/test/parseValue-excel.spec.ts @@ -131,6 +131,35 @@ describe('parseValue: EXCEL mode', () => { expect(parseBool('HAMIS', { locale: 'hu' }), 'hu: HAMIS').toEqual({ v: false }); }); + test('parseNumber accepts spaces after a number', () => { + expect(parseNumber('5 ')?.v).toBe(5); + expect(parseNumber(' 5 ')?.v).toBe(5); + expect(parseNumber('5 ')?.v).toBe(5); + expect(parseNumber('1.5 ')?.v).toBe(1.5); + expect(parseNumber('1,000 ')?.v).toBe(1000); + expect(parseNumber('100 % ')?.v).toBe(1); + expect(parseNumber('$5 ')?.v).toBe(5); + expect(parseNumber('(5) ')?.v).toBe(-5); + }); + + test('parseNumber refuses other whitespace next to a number', () => { + for (const text of [ + '5\u00a0', + '5\u202f', + '5\u00a0 ', + '5\u202f ', + '5 \u00a0', + '5\u00a0%', + '5\t', + '5\n', + '5\r', + '5 \t', + '\t5' + ]) { + expect(parseNumber(text), JSON.stringify(text)).toBe(undefined); + } + }); + test('issue #71', () => { expect(parseValue('2021/1-10')).toEqual({ v: 44206, z: 'm/d/yy' }); });