Generate TypeScriptReact grammar

This commit is contained in:
Sheetal Nandi 2016-09-20 12:25:38 -07:00
Родитель 2d455cafe0
Коммит dfdd2cb6f6
4 изменённых файлов: 4633 добавлений и 5895 удалений

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -8,13 +8,66 @@ function writePlistFile(grammar: any, fileName: string) {
fs.writeFileSync(fileName, text, "utf8");
}
function changeToTsxGrammar() {
function readYamlGrammar(fileName: string) {
const text = fs.readFileSync(fileName, "utf8");
return yaml.safeLoad(text);
}
function convertTsGrammar() {
const text = fs.readFileSync("../TypeScript.YAML-tmLanguage", "utf8");
const tsGrammar = yaml.safeLoad(text);
function fixScopeNames(rule: any) {
if (typeof rule.name === 'string') {
rule.name = rule.name.replace(/\.ts/g, '.tsx');
}
for (var property in rule) {
var value = rule[property];
if (typeof value === 'object') {
fixScopeNames(value);
}
}
}
function changeToTsxGrammar(grammar: any) {
const tsxUpdates = readYamlGrammar("../TypeScriptReact.YAML-tmLanguage");
// Update name, file types, scope name and uuid
for (let key in tsxUpdates) {
if (key !== "repository") {
grammar[key] = tsxUpdates[key];
}
}
// Update scope names to .tsx
const repository = grammar.repository;
const updatesRepository = tsxUpdates.repository;
for (let key in repository) {
fixScopeNames(repository[key]);
}
// Add repository items
for (let key in updatesRepository) {
switch(key) {
case "statements":
case "expression":
// Update statements/expression
repository[key].patterns.unshift(updatesRepository[key].patterns[0]);
break;
default:
// Add jsx
repository[key] = updatesRepository[key];
}
}
return grammar;
}
function build() {
const tsGrammar = readYamlGrammar("../TypeScript.YAML-tmLanguage");
// Write TypeScript.tmLanguage
writePlistFile(tsGrammar, "../TypeScript.tmLanguage");
// Write TypeScriptReact.tmLangauge
const tsxGrammar = changeToTsxGrammar(tsGrammar);
writePlistFile(tsxGrammar, "../TypeScriptReact.tmLanguage");
}
convertTsGrammar();
build();

Просмотреть файл

@ -18,7 +18,7 @@ function foo() {
^
source.tsx meta.function.tsx
^^^
source.tsx meta.function.tsx entity.name.function.ts
source.tsx meta.function.tsx entity.name.function.tsx
^
source.tsx meta.function.tsx meta.parameters.tsx punctuation.definition.parameters.begin.tsx
^