Files
vscode/extensions/razor/build/update-grammar.mjs
2025-07-25 13:10:08 +00:00

45 lines
1.5 KiB
JavaScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
import * as vscodeGrammarUpdater from 'vscode-grammar-updater';
function patchGrammar(grammar) {
grammar.scopeName = 'text.html.cshtml';
let patchCount = 0;
let visit = function (rule, parent) {
if (rule.include?.startsWith('text.html.basic')) {
patchCount++;
rule.include = 'text.html.derivative';
}
for (let property in rule) {
let value = rule[property ];
if (typeof value === 'object') {
visit(value, { node: rule, property: property, parent: parent });
}
}
};
let roots = [grammar.repository, grammar.patterns];
for (let root of roots) {
for (let key in root) {
visit(root[key], { node: root, property: key, parent: undefined });
}
}
if (patchCount !== 4) {
console.warn(`Expected to patch 4 occurrences of text.html.basic: Was ${patchCount}`);
}
return grammar;
}
const razorGrammarRepo = 'dotnet/razor';
const grammarPath = 'src/Razor/src/Microsoft.VisualStudio.RazorExtension/EmbeddedGrammars/aspnetcorerazor.tmLanguage.json';
vscodeGrammarUpdater.update(razorGrammarRepo, grammarPath, './syntaxes/cshtml.tmLanguage.json', grammar => patchGrammar(grammar), 'main');