Przeglądaj źródła

Fixes Microsoft/monaco-editor#1170

Alex Dima 6 lat temu
rodzic
commit
9961f06110
2 zmienionych plików z 71 dodań i 7 usunięć
  1. 63 0
      src/python/python.test.ts
  2. 8 7
      src/python/python.ts

+ 63 - 0
src/python/python.test.ts

@@ -92,6 +92,69 @@ testTokenization('python', [
 		]
 	}],
 
+	// https://github.com/Microsoft/monaco-editor/issues/1170
+	[{
+		line: 'def f():',
+		tokens: [
+			{ startIndex: 0, type: 'keyword.python' },
+			{ startIndex: 3, type: 'white.python' },
+			{ startIndex: 4, type: 'identifier.python' },
+			{ startIndex: 5, type: 'delimiter.parenthesis.python' },
+			{ startIndex: 7, type: 'delimiter.python' },
+		]
+	}, {
+		line: '   """multi',
+		tokens: [
+			{ startIndex: 0, type: 'white.python' },
+			{ startIndex: 3, type: 'string.python' },
+		]
+	}, {
+		line: '   line',
+		tokens: [
+			{ startIndex: 0, type: 'string.python' },
+		]
+	}, {
+		line: '   comment',
+		tokens: [
+			{ startIndex: 0, type: 'string.python' },
+		]
+	}, {
+		line: '   """ + """',
+		tokens: [
+			{ startIndex: 0, type: 'string.python' },
+			{ startIndex: 6, type: 'white.python' },
+			{ startIndex: 7, type: '' },
+			{ startIndex: 8, type: 'white.python' },
+			{ startIndex: 9, type: 'string.python' },
+		]
+	}, {
+		line: '   another',
+		tokens: [
+			{ startIndex: 0, type: 'string.python' },
+		]
+	}, {
+		line: '   multi',
+		tokens: [
+			{ startIndex: 0, type: 'string.python' },
+		]
+	}, {
+		line: '   line',
+		tokens: [
+			{ startIndex: 0, type: 'string.python' },
+		]
+	}, {
+		line: '   comment"""',
+		tokens: [
+			{ startIndex: 0, type: 'string.python' },
+		]
+	}, {
+		line: '   code',
+		tokens: [
+			{ startIndex: 0, type: 'white.python' },
+			{ startIndex: 3, type: 'identifier.python' },
+		]
+	}],
+
 	// Numbers
 	[{
 		line: '0xAcBFd',

+ 8 - 7
src/python/python.ts

@@ -215,19 +215,20 @@ export const language = <ILanguage>{
 		whitespace: [
 			[/\s+/, 'white'],
 			[/(^#.*$)/, 'comment'],
-			[/('''.*''')|(""".*""")/, 'string'],
-			[/'''.*$/, 'string', '@endDocString'],
-			[/""".*$/, 'string', '@endDblDocString']
+			[/'''/, 'string', '@endDocString'],
+			[/"""/, 'string', '@endDblDocString']
 		],
 		endDocString: [
+			[/[^']+/, 'string'],
 			[/\\'/, 'string'],
-			[/.*'''/, 'string', '@popall'],
-			[/.*$/, 'string']
+			[/'''/, 'string', '@popall'],
+			[/'/, 'string']
 		],
 		endDblDocString: [
+			[/[^"]+/, 'string'],
 			[/\\"/, 'string'],
-			[/.*"""/, 'string', '@popall'],
-			[/.*$/, 'string']
+			[/"""/, 'string', '@popall'],
+			[/"/, 'string']
 		],
 
 		// Recognize hex, negatives, decimals, imaginaries, longs, and scientific notation