From 73a67c40c70588abe96b4d81487b7961ab8dedb9 Mon Sep 17 00:00:00 2001 From: agammann <161159040+agammann@users.noreply.github.com> Date: Sat, 10 Oct 2026 22:46:28 -0700 Subject: [PATCH] Parse JSON grammars with mixed-case extensions --- src/parseRawGrammar.ts | 2 +- src/tests/parseRawGrammar.test.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/tests/parseRawGrammar.test.ts diff --git a/src/parseRawGrammar.ts b/src/parseRawGrammar.ts index f64614d4..73738627 100644 --- a/src/parseRawGrammar.ts +++ b/src/parseRawGrammar.ts @@ -8,7 +8,7 @@ import { DebugFlags } from './debug'; import { parseJSON } from './json'; export function parseRawGrammar(content: string, filePath: string | null = null): IRawGrammar { - if (filePath !== null && /\.json$/.test(filePath)) { + if (filePath !== null && /\.json$/i.test(filePath)) { return parseJSONGrammar(content, filePath); } return parsePLISTGrammar(content, filePath); diff --git a/src/tests/parseRawGrammar.test.ts b/src/tests/parseRawGrammar.test.ts new file mode 100644 index 00000000..7d23d04a --- /dev/null +++ b/src/tests/parseRawGrammar.test.ts @@ -0,0 +1,14 @@ +/*--------------------------------------------------------- + * Copyright (C) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------*/ + +import { test } from 'vitest'; +import * as assert from 'assert'; +import { parseRawGrammar } from '../main'; + +test('JSON grammars load with uppercase file extensions', () => { + const source = '{"scopeName":"source.example","patterns":[]}'; + const expected = parseRawGrammar(source, 'example.json'); + assert.deepStrictEqual(parseRawGrammar(source, 'example.JSON'), expected); + assert.deepStrictEqual(parseRawGrammar(source, 'example.Json'), expected); +});