Path: blob/main/extensions/html/build/update-grammar.mjs
3314 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/4// @ts-check56import * as vscodeGrammarUpdater from 'vscode-grammar-updater';78function patchGrammar(grammar) {9let patchCount = 0;1011let visit = function (rule, parent) {12if (rule.name === 'source.js' || rule.name === 'source.css') {13if (parent.node[0].name !== 'punctuation.definition.string.end.html' && parent.parent && parent.parent.property === 'endCaptures') {14rule.name = rule.name + '-ignored-vscode';15patchCount++;16}17}18for (let property in rule) {19let value = rule[property];20if (typeof value === 'object') {21visit(value, { node: rule, property: property, parent: parent });22}23}24};2526let repository = grammar.repository;27for (let key in repository) {28visit(repository[key], { node: repository, property: key, parent: undefined });29}30if (patchCount !== 2) {31console.warn(`Expected to patch 2 occurrences of source.js & source.css: Was ${patchCount}`);32}3334return grammar;35}3637function patchGrammarDerivative(grammar) {38let patchCount = 0;3940let patterns = grammar.patterns;41for (let key in patterns) {42if (patterns[key]?.name === 'meta.tag.other.unrecognized.html.derivative' && patterns[key]?.begin === '(</?)(\\w[^\\s>]*)(?<!/)') {43patterns[key].begin = '(</?)(\\w[^\\s<>]*)(?<!/)';44patchCount++;45}46}47if (patchCount !== 1) {48console.warn(`Expected to do 1 patch: Was ${patchCount}`);49}5051return grammar;52}5354const tsGrammarRepo = 'textmate/html.tmbundle';55const grammarPath = 'Syntaxes/HTML.plist';56vscodeGrammarUpdater.update(tsGrammarRepo, grammarPath, './syntaxes/html.tmLanguage.json', grammar => patchGrammar(grammar));5758const grammarDerivativePath = 'Syntaxes/HTML%20%28Derivative%29.tmLanguage';59vscodeGrammarUpdater.update(tsGrammarRepo, grammarDerivativePath, './syntaxes/html-derivative.tmLanguage.json', grammar => patchGrammarDerivative(grammar));60616263