From 071c3f9d248e18c5638c5352ca4a60fb227f639e Mon Sep 17 00:00:00 2001 From: Jos de Jong Date: Thu, 10 Nov 2022 10:02:43 +0100 Subject: [PATCH] fix: negative numbers like `-4.1` not highlighted with the right color in tree mode --- src/lib/utils/typeUtils.test.ts | 5 +++++ src/lib/utils/typeUtils.ts | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/lib/utils/typeUtils.test.ts b/src/lib/utils/typeUtils.test.ts index c957ed15..ab3deae3 100644 --- a/src/lib/utils/typeUtils.test.ts +++ b/src/lib/utils/typeUtils.test.ts @@ -87,6 +87,8 @@ describe('typeUtils', () => { it('valueType', () => { strictEqual(valueType(2, JSON), 'number') + strictEqual(valueType(-2, JSON), 'number') + strictEqual(valueType(2.4e3, JSON), 'number') strictEqual(valueType('some text', JSON), 'string') strictEqual(valueType(true, JSON), 'boolean') strictEqual(valueType(false, JSON), 'boolean') @@ -96,12 +98,15 @@ describe('typeUtils', () => { strictEqual(valueType(123n, JSON), 'number') strictEqual(valueType(new Date(), JSON), 'unknown') strictEqual(valueType(new LosslessNumber('123'), LosslessJSONParser as JSON), 'number') + strictEqual(valueType(new LosslessNumber('2.4e3'), LosslessJSONParser as JSON), 'number') + strictEqual(valueType(new LosslessNumber('-4.0'), LosslessJSONParser as JSON), 'number') }) it('isStringContainingPrimitiveValue', () => { strictEqual(isStringContainingPrimitiveValue(22, JSON), false) strictEqual(isStringContainingPrimitiveValue('text', JSON), false) strictEqual(isStringContainingPrimitiveValue('2.4', JSON), true) + strictEqual(isStringContainingPrimitiveValue('-2.4', JSON), true) strictEqual(isStringContainingPrimitiveValue('2e3', JSON), true) strictEqual(isStringContainingPrimitiveValue('true', JSON), true) strictEqual(isStringContainingPrimitiveValue('false', JSON), true) diff --git a/src/lib/utils/typeUtils.ts b/src/lib/utils/typeUtils.ts index e14ff787..90cd66ac 100644 --- a/src/lib/utils/typeUtils.ts +++ b/src/lib/utils/typeUtils.ts @@ -1,6 +1,6 @@ // TODO: unit test typeUtils.js -import { isDigit, isNumber } from './numberUtils.js' +import { isNumber } from './numberUtils.js' import type { JSONParser } from '../types.js' /** @@ -118,9 +118,9 @@ export function valueType(value: unknown, parser: JSONParser): string { return 'object' } - // unknown type. Try out what stringfying results in + // unknown type (like a LosslessNumber). Try out what stringfying results in const valueStr = parser.stringify(value) - if (valueStr && isDigit(valueStr[0])) { + if (valueStr && isNumber(valueStr)) { return 'number' } if (valueStr === 'true' || valueStr === 'false') {