1
0
Эх сурвалжийг харах

Merge pull request #27 from templarbit/master

Support Content-Security-Policy syntax highlighting
Alexandru Dima 7 жил өмнө
parent
commit
b7b82b5d4f

+ 2 - 1
gulpfile.js

@@ -81,7 +81,8 @@ gulp.task('release', ['clean-release','compile'], function() {
 			bundleOne('src/mysql'),
 			bundleOne('src/mysql'),
 			bundleOne('src/redshift'),
 			bundleOne('src/redshift'),
 			bundleOne('src/pgsql'),
 			bundleOne('src/pgsql'),
-			bundleOne('src/redis')
+			bundleOne('src/redis'),
+			bundleOne('src/csp')
 		)
 		)
 		.pipe(uglify({
 		.pipe(uglify({
 			output: {
 			output: {

+ 61 - 0
src/csp.ts

@@ -0,0 +1,61 @@
+/*---------------------------------------------------------------------------------------------
+ *  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 = {
+	brackets: [],
+	autoClosingPairs: [],
+	surroundingPairs: []
+};
+
+export const language = <ILanguage>{
+	// Set defaultToken to invalid to see what you do not tokenize yet
+	// defaultToken: 'invalid',
+	keywords: [],
+	typeKeywords: [],
+	tokenPostfix: '.csp',
+	operators: [],
+	symbols:  /[=><!~?:&|+\-*\/\^%]+/,
+	escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
+	tokenizer: {
+		root: [
+			[/child-src/,                   'string.quote'],
+			[/connect-src/,                 'string.quote'],
+			[/default-src/,                 'string.quote'],
+			[/font-src/,                    'string.quote'],
+			[/frame-src/,                   'string.quote'],
+			[/img-src/,                     'string.quote'],
+			[/manifest-src/,                'string.quote'],
+			[/media-src/,                   'string.quote'],
+			[/object-src/,                  'string.quote'],
+			[/script-src/,                  'string.quote'],
+			[/style-src/,                   'string.quote'],
+			[/worker-src/,                  'string.quote'],
+			[/base-uri/,                    'string.quote'],
+			[/plugin-types/,                'string.quote'],
+			[/sandbox/,                     'string.quote'],
+			[/disown-opener/,               'string.quote'],
+			[/form-action/,                 'string.quote'],
+			[/frame-ancestors/,             'string.quote'],
+			[/report-uri/,                  'string.quote'],
+			[/report-to/,                   'string.quote'],
+			[/upgrade-insecure-requests/,   'string.quote'],
+			[/block-all-mixed-content/,     'string.quote'],
+			[/require-sri-for/,             'string.quote'],
+			[/reflected-xss/,               'string.quote'],
+			[/referrer/,                    'string.quote'],
+			[/policy-uri/,                  'string.quote'],
+			[/'self'/,                      'string.quote'],
+			[/'unsafe-inline'/,             'string.quote'],
+			[/'unsafe-eval'/,               'string.quote'],
+			[/'strict-dynamic'/,            'string.quote'],
+			[/'unsafe-hashed-attributes'/,  'string.quote']
+		]
+	}
+};

+ 7 - 0
src/monaco.contribution.ts

@@ -300,3 +300,10 @@ registerLanguage({
 	aliases: ['redis'],
 	aliases: ['redis'],
 	module: './redis'
 	module: './redis'
 });
 });
+
+registerLanguage({
+	id: 'csp',
+	extensions: [],
+	aliases: ['CSP', 'csp'],
+	module: './csp'
+});

+ 2 - 1
test/all.js

@@ -62,7 +62,8 @@ requirejs([
 		'out/test/mysql.test',
 		'out/test/mysql.test',
 		'out/test/pgsql.test',
 		'out/test/pgsql.test',
 		'out/test/redshift.test',
 		'out/test/redshift.test',
-		'out/test/redis.test'
+		'out/test/redis.test',
+		'out/test/csp.test',
 	], function() {
 	], function() {
 		run(); // We can launch the tests!
 		run(); // We can launch the tests!
 	});
 	});

+ 10 - 0
test/csp.test.ts

@@ -0,0 +1,10 @@
+/*---------------------------------------------------------------------------------------------
+ *  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 } from './testRunner';
+
+testTokenization('csp', []);