/
githubmirror
/
monaco-editor
Обзор
Документация
Войти
/
githubmirror
/
monaco-editor
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/languages/definitions/xml/xml.ts
106 строк
3 KB
Henning Dieterichs
Exported modules reorganization (#5155)
10 янв 2026, 02:11
Не верифицирован
10 янв 2026, 02:11
558bbbc
Код
Авторство
О чём код?
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { languages } from '../../../editor'; export const conf: languages.LanguageConfiguration = { comments: { blockComment: ['<!--', '-->'] }, brackets: [['<', '>']], autoClosingPairs: [ { open: '<', close: '>' }, { open: "'", close: "'" }, { open: '"', close: '"' } ], surroundingPairs: [ { open: '<', close: '>' }, { open: "'", close: "'" }, { open: '"', close: '"' } ], onEnterRules: [ { beforeText: new RegExp(`<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'), afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>$/i, action: { indentAction: languages.IndentAction.IndentOutdent } }, { beforeText: new RegExp(`<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`, 'i'), action: { indentAction: languages.IndentAction.Indent } } ] }; export const language = <languages.IMonarchLanguage>{ defaultToken: '', tokenPostfix: '.xml', ignoreCase: true, // Useful regular expressions qualifiedName: /(?:[\w\.\-]+:)?[\w\.\-]+/, tokenizer: { root: [ [/[^<&]+/, ''], { include: '@whitespace' }, // Standard opening tag [/(<)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'tag', next: '@tag' }]], // Standard closing tag [ /(<\/)(@qualifiedName)(\s*)(>)/, [{ token: 'delimiter' }, { token: 'tag' }, '', { token: 'delimiter' }] ], // Meta tags - instruction [/(<\?)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'metatag', next: '@tag' }]], // Meta tags - declaration [/(<\!)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'metatag', next: '@tag' }]], // CDATA [/<\!\[CDATA\[/, { token: 'delimiter.cdata', next: '@cdata' }], [/&\w+;/, 'string.escape'] ], cdata: [ [/[^\]]+/, ''], [/\]\]>/, { token: 'delimiter.cdata', next: '@pop' }], [/\]/, ''] ], tag: [ [/[ \t\r\n]+/, ''], [/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/, ['attribute.name', '', 'attribute.value']], [ /(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/, ['attribute.name', '', 'attribute.value'] ], [/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/, ['attribute.name', '', 'attribute.value']], [/@qualifiedName/, 'attribute.name'], [/\?>/, { token: 'delimiter', next: '@pop' }], [/(\/)(>)/, [{ token: 'tag' }, { token: 'delimiter', next: '@pop' }]], [/>/, { token: 'delimiter', next: '@pop' }] ], whitespace: [ [/[ \t\r\n]+/, ''], [/<!--/, { token: 'comment', next: '@comment' }] ], comment: [ [/[^<\-]+/, 'comment.content'], [/-->/, { token: 'comment', next: '@pop' }], [/<!--/, 'comment.content.invalid'], [/[<\-]/, 'comment.content'] ] } };