Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function getRegistry(getOnigLib) {
return new vsctm.Registry({
loadGrammar: sourceName => {
if (sourceName == null) {
console.error(
`I can't find the language for ${fixtureExtension}`
);
process.exit();
}
let grammarPath = pathFor.jsonSyntax(
sourceName.replace(/^source\./, "")
);
// check if the syntax exists
if (!fs.existsSync(grammarPath)) {
if (
![
"source.asm",
"source.x86",
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { ITokenizeLineResult, Registry, StackElement, parseRawGrammar } from 'vscode-textmate';
import { readFile } from 'fs';
import { resolve } from 'path';
const registry = new Registry({
loadGrammar: async (scopeName) => {
if (scopeName === 'source.cs') {
scopeName //?
// https://github.com/textmate/javascript.tmbundle/blob/master/Syntaxes/JavaScript.plist
const response = await new Promise((resolve, reject) => {
readFile('./grammars/csharp.tmLanguage', (e, v) => e ? reject(e) : resolve(v.toString()));
});
const g = parseRawGrammar(response, resolve('./grammars/csharp.tmLanguage'));
g //?
return g;
}
console.log(`Unknown scope name: ${scopeName}`);
return null;
}
});
loadGrammar: async (scopeName) => {
if (scopeName === 'source.cs') {
scopeName //?
// https://github.com/textmate/javascript.tmbundle/blob/master/Syntaxes/JavaScript.plist
const response = await new Promise((resolve, reject) => {
readFile('./grammars/csharp.tmLanguage', (e, v) => e ? reject(e) : resolve(v.toString()));
});
const g = parseRawGrammar(response, resolve('./grammars/csharp.tmLanguage'));
g //?
return g;
}
console.log(`Unknown scope name: ${scopeName}`);
return null;
}
});
result.rules.push(...parentTheme.rules);
result.settings.push(...parentTheme.settings);
}
}
if (json.tokenColors) {
result.settings.push(...json.tokenColors);
}
if (json.colors) {
Object.assign(result.colors, json.colors);
result.encodedTokensColors = Object.keys(result.colors).map(key => result.colors[key]);
}
if (monacoBase && givenName) {
for (const setting of result.settings) {
this.transform(setting, rule => result.rules.push(rule));
}
const reg = new Registry();
reg.setTheme(result);
result.encodedTokensColors = reg.getColorMap();
// index 0 has to be set to null as it is 'undefined' by default, but monaco code expects it to be null
// tslint:disable-next-line:no-null-keyword
result.encodedTokensColors[0] = null!;
// index 1 and 2 are the default colors
if (result.colors && result.colors['editor.foreground']) {
result.encodedTokensColors[1] = result.colors['editor.foreground'];
}
if (result.colors && result.colors['editor.background']) {
result.encodedTokensColors[2] = result.colors['editor.background'];
}
this.setTheme(givenName, result);
}
return result;
}
if (typeof tokenTypes === 'undefined' || tokenTypes === null) {
return undefined;
}
// tslint:disable-next-line:no-null-keyword
const result = Object.create(null);
const scopes = Object.keys(tokenTypes);
const len = scopes.length;
for (let i = 0; i < len; i++) {
const scope = scopes[i];
const tokenType = tokenTypes[scope];
switch (tokenType) {
case 'string':
result[scope] = StandardTokenType.String;
break;
case 'other':
result[scope] = StandardTokenType.Other;
break;
case 'comment':
result[scope] = StandardTokenType.Comment;
break;
}
}
return result;
}
// tslint:disable-next-line:no-null-keyword
const result = Object.create(null);
const scopes = Object.keys(tokenTypes);
const len = scopes.length;
for (let i = 0; i < len; i++) {
const scope = scopes[i];
const tokenType = tokenTypes[scope];
switch (tokenType) {
case 'string':
result[scope] = StandardTokenType.String;
break;
case 'other':
result[scope] = StandardTokenType.Other;
break;
case 'comment':
result[scope] = StandardTokenType.Comment;
break;
}
}
return result;
}
private convertTokenTypes(tokenTypes?: ScopeMap): ITokenTypeMap | undefined {
if (typeof tokenTypes === 'undefined' || tokenTypes === null) {
return undefined;
}
// tslint:disable-next-line:no-null-keyword
const result = Object.create(null);
const scopes = Object.keys(tokenTypes);
const len = scopes.length;
for (let i = 0; i < len; i++) {
const scope = scopes[i];
const tokenType = tokenTypes[scope];
switch (tokenType) {
case 'string':
result[scope] = StandardTokenType.String;
break;
case 'other':
result[scope] = StandardTokenType.Other;
break;
case 'comment':
result[scope] = StandardTokenType.Comment;
break;
}
}
return result;
}
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { ITokenizeLineResult, Registry, StackElement } from 'vscode-textmate';
const registry = new Registry();
const grammar = registry.loadGrammarFromPathSync('syntaxes/csharp.tmLanguage');
const excludedTypes = ['source.cs', 'meta.interpolation.cs', 'meta.preprocessor.cs', 'meta.tag.cs', 'meta.type.parameters.cs']
export function tokenize(input: string | Input, excludeTypes: boolean = true): Token[] {
if (typeof input === "string") {
input = Input.FromText(input);
}
let tokens: Token[] = [];
let previousStack: StackElement = null;
for (let lineIndex = 0; lineIndex < input.lines.length; lineIndex++) {
const line = input.lines[lineIndex];
let lineResult = grammar.tokenizeLine(line, previousStack);
previousStack = lineResult.ruleStack;
ts = 'source.ts',
tsx = 'source.tsx'
}
const grammarFileNames: Record = {
[GrammarKind.ts]: "TypeScript.tmLanguage",
[GrammarKind.tsx]: "TypeScriptReact.tmLanguage"
};
function grammarPath(kind: GrammarKind) {
return path.join(__dirname, '..', grammarFileNames[kind]);
}
const grammarPaths = {
[GrammarKind.ts]: grammarPath(GrammarKind.ts),
[GrammarKind.tsx]: grammarPath(GrammarKind.tsx)
};
const registery = new vt.Registry({
loadGrammar: function (scopeName: GrammarKind) {
const path = grammarPaths[scopeName];
if (path) {
return new Promise((resolve, reject) => {
fs.readFile(path, (error, content) => {
if (error) {
reject(error);
} else {
const rawGrammar = vt.parseRawGrammar(content.toString(), path);
resolve(rawGrammar);
}
});
});
}
return Promise.resolve(null);
fs.readFile(path, (error, content) => {
if (error) {
reject(error);
} else {
const rawGrammar = vt.parseRawGrammar(content.toString(), path);
resolve(rawGrammar);
}
});
});