commit
bc5c3656cb
@ -0,0 +1,17 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
import { registerLanguage } from '../_.contribution';
|
||||||
|
|
||||||
|
// Allow for running under nodejs/requirejs in tests
|
||||||
|
const _monaco: typeof monaco = (typeof monaco === 'undefined' ? (<any>self).monaco : monaco);
|
||||||
|
|
||||||
|
registerLanguage({
|
||||||
|
id: 'azcli',
|
||||||
|
extensions: ['.azcli'],
|
||||||
|
aliases: ['Azure CLI', 'azcli'],
|
||||||
|
loader: () => _monaco.Promise.wrap(import('./azcli'))
|
||||||
|
});
|
@ -0,0 +1,157 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
import { testTokenization as actualTestTokenization, ITestItem } from '../test/testRunner';
|
||||||
|
|
||||||
|
function testTokenization(_language: string | string[], tests: ITestItem[][]): void {
|
||||||
|
tests = tests.map(t => {
|
||||||
|
return t.map(t => {
|
||||||
|
return {
|
||||||
|
line: t.line.replace(/\n/g, ' '),
|
||||||
|
tokens: t.tokens
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
actualTestTokenization(_language, tests);
|
||||||
|
}
|
||||||
|
|
||||||
|
testTokenization('azcli', [
|
||||||
|
// Comment single line
|
||||||
|
[{
|
||||||
|
line: '#',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'comment.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '# az find -q secret',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'comment.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: ' # az find -q secret',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' },
|
||||||
|
{ startIndex: 4, type: 'comment.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '#az find -q secret',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'comment.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
|
||||||
|
// Other cases
|
||||||
|
[{
|
||||||
|
line: 'az find -q secret',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' },
|
||||||
|
{ startIndex: 7, type: 'key.identifier.azcli' },
|
||||||
|
{ startIndex: 11, type: 'string.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '',
|
||||||
|
tokens: [
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: ' ',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '--assignee',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'key.identifier.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: ' --service-principal',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' },
|
||||||
|
{ startIndex: 3, type: 'key.identifier.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: 'az ad sp create-for-rb --name ServicePrincipalName --password PASSWORD',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' },
|
||||||
|
{ startIndex: 23, type: 'key.identifier.azcli' },
|
||||||
|
{ startIndex: 31, type: 'string.azcli' },
|
||||||
|
{ startIndex: 52, type: 'key.identifier.azcli' },
|
||||||
|
{ startIndex: 63, type: 'string.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '--name!~`\"$%^&*(|\/\.,-=+',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'key.identifier.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '--name#some comment',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'key.identifier.azcli' },
|
||||||
|
{ startIndex: 6, type: 'comment.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '--query osPro ``````',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'key.identifier.azcli' },
|
||||||
|
{ startIndex: 8, type: 'string.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: 'az ad sp create-for-rbac',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '123456789',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '- abc',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'key.identifier.azcli' },
|
||||||
|
{ startIndex: 2, type: 'string.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '- @!$()',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'key.identifier.azcli' },
|
||||||
|
{ startIndex: 2, type: 'string.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '""',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: '// some text',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' }
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
[{
|
||||||
|
line: `'APP_ID'`,
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.azcli' }
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
]);
|
@ -0,0 +1,65 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
import IRichLanguageConfiguration = monaco.languages.LanguageConfiguration;
|
||||||
|
import ILanguage = monaco.languages.IMonarchLanguage;
|
||||||
|
|
||||||
|
export const conf: IRichLanguageConfiguration = {
|
||||||
|
comments: {
|
||||||
|
lineComment: '#',
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const language = <ILanguage>{
|
||||||
|
defaultToken: 'keyword',
|
||||||
|
ignoreCase: true,
|
||||||
|
tokenPostfix: '.azcli',
|
||||||
|
|
||||||
|
str: /[^#\s]/,
|
||||||
|
|
||||||
|
tokenizer: {
|
||||||
|
root: [
|
||||||
|
{include: '@comment'},
|
||||||
|
[/\s-+@str*\s*/, {
|
||||||
|
cases: {
|
||||||
|
'@eos': { token: 'key.identifier', next: '@popall' },
|
||||||
|
'@default': { token: 'key.identifier', next: '@type' }
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
[/^-+@str*\s*/, {
|
||||||
|
cases: {
|
||||||
|
'@eos': { token: 'key.identifier', next: '@popall' },
|
||||||
|
'@default': { token: 'key.identifier', next: '@type' }
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
],
|
||||||
|
|
||||||
|
type: [
|
||||||
|
{include: '@comment'},
|
||||||
|
[/-+@str*\s*/, {
|
||||||
|
cases: {
|
||||||
|
'@eos': { token: 'key.identifier', next: '@popall' },
|
||||||
|
'@default': 'key.identifier'
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
[/@str+\s*/, {
|
||||||
|
cases: {
|
||||||
|
'@eos': { token: 'string', next: '@popall' },
|
||||||
|
'@default': 'string'
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
],
|
||||||
|
|
||||||
|
comment: [
|
||||||
|
[/#.*$/, {
|
||||||
|
cases: {
|
||||||
|
'@eos': { token: 'comment', next: '@popall' }
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue