mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 11:35:40 +01:00
More tweaks for optimal colorization
This commit is contained in:
parent
da418eb8d9
commit
6882a78485
13 changed files with 176 additions and 188 deletions
|
|
@ -138,7 +138,8 @@ export var language = <IMonarchLanguage> {
|
|||
|
||||
comment: [
|
||||
['\\*\\/', 'comment', '@pop'],
|
||||
[/[^*/]+/, 'comment']
|
||||
[/[^*/]+/, 'comment'],
|
||||
[/./, 'comment'],
|
||||
],
|
||||
|
||||
name: [
|
||||
|
|
|
|||
|
|
@ -57,8 +57,8 @@ export var conf:IRichLanguageConfiguration = {
|
|||
}
|
||||
|
||||
export const htmlTokenTypes = {
|
||||
DELIM_START: 'start.delimiter.tag.html',
|
||||
DELIM_END: 'end.delimiter.tag.html',
|
||||
DELIM_START: 'delimiter.html',
|
||||
DELIM_END: 'delimiter.html',
|
||||
DELIM_COMMENT: 'comment.html',
|
||||
COMMENT: 'comment.content.html',
|
||||
getTag: (name: string) => {
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ export var conf:IRichLanguageConfiguration = {
|
|||
};
|
||||
|
||||
export const htmlTokenTypes = {
|
||||
DELIM_START: 'start.delimiter.tag',
|
||||
DELIM_END: 'end.delimiter.tag',
|
||||
DELIM_START: 'delimiter',
|
||||
DELIM_END: 'delimiter',
|
||||
DELIM_COMMENT: 'comment',
|
||||
getTag: (name: string) => {
|
||||
return 'tag';
|
||||
|
|
|
|||
|
|
@ -17,14 +17,12 @@ const TOKEN_LIST = 'keyword';
|
|||
const TOKEN_BLOCK = 'string';
|
||||
const TOKEN_BLOCK_CODE = 'variable.source';
|
||||
|
||||
const DELIM_ASSIGN = 'meta.tag.assign.html';
|
||||
const DELIM_ASSIGN = 'delimiter.html';
|
||||
const ATTRIB_NAME = 'attribute.name.html';
|
||||
const ATTRIB_VALUE = 'string.html';
|
||||
|
||||
const TAG_PREFIX = 'entity.name.tag.tag-';
|
||||
|
||||
function getTag(name: string) {
|
||||
return TAG_PREFIX + name;
|
||||
return 'tag';
|
||||
}
|
||||
|
||||
export var conf: IRichLanguageConfiguration = {
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ export var conf:IRichLanguageConfiguration = {
|
|||
};
|
||||
|
||||
export const htmlTokenTypes = {
|
||||
DELIM_START: 'start.delimiter.tag.html',
|
||||
DELIM_END: 'end.delimiter.tag.html',
|
||||
DELIM_START: 'delimiter.html',
|
||||
DELIM_END: 'delimiter.html',
|
||||
DELIM_COMMENT: 'comment.html',
|
||||
COMMENT: 'comment.content.html',
|
||||
getTag: (name: string) => {
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ export var conf:IRichLanguageConfiguration = {
|
|||
};
|
||||
|
||||
export const htmlTokenTypes = {
|
||||
DELIM_START: 'start.delimiter.tag.html',
|
||||
DELIM_END: 'end.delimiter.tag.html',
|
||||
DELIM_START: 'delimiter.html',
|
||||
DELIM_END: 'delimiter.html',
|
||||
DELIM_COMMENT: 'comment.html',
|
||||
COMMENT: 'comment.content.html',
|
||||
getTag: (name: string) => {
|
||||
|
|
|
|||
|
|
@ -1095,13 +1095,13 @@ export var language = <ILanguage> {
|
|||
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number']
|
||||
],
|
||||
strings: [
|
||||
[/N'/, { token: 'string.quote', next: '@string' }],
|
||||
[/'/, { token: 'string.quote', next: '@string' }]
|
||||
[/N'/, { token: 'string', next: '@string' }],
|
||||
[/'/, { token: 'string', next: '@string' }]
|
||||
],
|
||||
string: [
|
||||
[/[^']+/, 'string'],
|
||||
[/''/, 'string'],
|
||||
[/'/, { token: 'string.quote', next: '@pop' }]
|
||||
[/'/, { token: 'string', next: '@pop' }]
|
||||
],
|
||||
complexIdentifiers: [
|
||||
[/\[/, { token: 'identifier.quote', next: '@bracketedIdentifier' }],
|
||||
|
|
|
|||
26
src/xml.ts
26
src/xml.ts
|
|
@ -44,25 +44,25 @@ export var language = <ILanguage> {
|
|||
|
||||
// Standard opening tag
|
||||
[/(<)(@qualifiedName)/, [
|
||||
{ token: 'delimiter.start' },
|
||||
{ token: 'tag.tag-$2', next: '@tag.$2' }]],
|
||||
{ token: 'delimiter' },
|
||||
{ token: 'tag', next: '@tag' }]],
|
||||
|
||||
// Standard closing tag
|
||||
[/(<\/)(@qualifiedName)(\s*)(>)/, [
|
||||
{ token: 'delimiter.end' },
|
||||
{ token: 'tag.tag-$2' },
|
||||
{ token: 'delimiter' },
|
||||
{ token: 'tag' },
|
||||
'',
|
||||
{ token: 'delimiter.end' }]],
|
||||
{ token: 'delimiter' }]],
|
||||
|
||||
// Meta tags - instruction
|
||||
[/(<\?)(@qualifiedName)/, [
|
||||
{ token: 'delimiter.start' },
|
||||
{ token: 'metatag.instruction', next: '@tag' }]],
|
||||
{ token: 'delimiter' },
|
||||
{ token: 'metatag', next: '@tag' }]],
|
||||
|
||||
// Meta tags - declaration
|
||||
[/(<\!)(@qualifiedName)/, [
|
||||
{ token: 'delimiter.start' },
|
||||
{ token: 'metatag.declaration', next: '@tag' }]],
|
||||
{ token: 'delimiter' },
|
||||
{ token: 'metatag', next: '@tag' }]],
|
||||
|
||||
// CDATA
|
||||
[/<\!\[CDATA\[/, { token: 'delimiter.cdata', next: '@cdata' }],
|
||||
|
|
@ -82,11 +82,11 @@ export var language = <ILanguage> {
|
|||
[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/, ['attribute.name', '', 'attribute.value']],
|
||||
[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/, ['attribute.name', '', 'attribute.value']],
|
||||
[/@qualifiedName/, 'attribute.name'],
|
||||
[/\?>/, { token: 'delimiter.start', next: '@pop' }],
|
||||
[/\?>/, { token: 'delimiter', next: '@pop' }],
|
||||
[/(\/)(>)/, [
|
||||
{ token: 'tag.tag-$S2' },
|
||||
{ token: 'delimiter.start', next: '@pop' }]],
|
||||
[/>/, { token: 'delimiter.start', next: '@pop' }],
|
||||
{ token: 'tag' },
|
||||
{ token: 'delimiter', next: '@pop' }]],
|
||||
[/>/, { token: 'delimiter', next: '@pop' }],
|
||||
],
|
||||
|
||||
whitespace: [
|
||||
|
|
|
|||
|
|
@ -245,7 +245,7 @@ testTokenization(['handlebars', 'css'], [
|
|||
{ startIndex:7, type: HTML_DELIM_START },
|
||||
{ startIndex:8, type: getTag('script') },
|
||||
{ startIndex:14, type: HTML_DELIM_END },
|
||||
{ startIndex:15, type: HTML_DELIM_START },
|
||||
// { startIndex:15, type: HTML_DELIM_START },
|
||||
{ startIndex:17, type: getTag('script') },
|
||||
{ startIndex:23, type: HTML_DELIM_END },
|
||||
{ startIndex:24, type: handlebarsTokenTypes.EMBED },
|
||||
|
|
|
|||
|
|
@ -274,7 +274,7 @@ testTokenization(['html', 'css'], [
|
|||
{ startIndex:9, type: DELIM_START },
|
||||
{ startIndex:11, type: getTag('script') },
|
||||
{ startIndex:17, type: DELIM_END },
|
||||
{ startIndex:18, type: DELIM_START },
|
||||
// { startIndex:18, type: DELIM_START },
|
||||
{ startIndex:19, type: getTag('script') },
|
||||
{ startIndex:25, type: DELIM_END },
|
||||
{ startIndex:26, type: '' },
|
||||
|
|
@ -295,7 +295,7 @@ testTokenization(['html', 'css'], [
|
|||
{ startIndex:12, type: DELIM_ASSIGN },
|
||||
{ startIndex:13, type: ATTRIB_VALUE },
|
||||
{ startIndex:30, type: DELIM_END },
|
||||
{ startIndex:31, type: DELIM_START },
|
||||
// { startIndex:31, type: DELIM_START },
|
||||
{ startIndex:33, type: getTag('script') },
|
||||
{ startIndex:39, type: DELIM_END }
|
||||
]
|
||||
|
|
@ -330,7 +330,7 @@ testTokenization(['html', 'css'], [
|
|||
{ startIndex:34, type: DELIM_ASSIGN },
|
||||
{ startIndex:35, type: ATTRIB_VALUE },
|
||||
{ startIndex:44, type: DELIM_END },
|
||||
{ startIndex:45, type: DELIM_START },
|
||||
// { startIndex:45, type: DELIM_START },
|
||||
{ startIndex:47, type: getTag('script') },
|
||||
{ startIndex:53, type: DELIM_END }
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1707,7 +1707,7 @@ testTokenization(['php', 'css'], [
|
|||
{ startIndex:0, type: htmlTokenTypes.DELIM_START },
|
||||
{ startIndex:1, type: htmlTokenTypes.getTag('abc') },
|
||||
{ startIndex:4, type: htmlTokenTypes.DELIM_END },
|
||||
{ startIndex:5, type: htmlTokenTypes.DELIM_START },
|
||||
// { startIndex:5, type: htmlTokenTypes.DELIM_START },
|
||||
{ startIndex:6, type: htmlTokenTypes.getTag('script') },
|
||||
{ startIndex:12, type: htmlTokenTypes.DELIM_END },
|
||||
{ startIndex:13, type: '' },
|
||||
|
|
@ -1731,7 +1731,7 @@ testTokenization(['php', 'css'], [
|
|||
{ startIndex:0, type: htmlTokenTypes.DELIM_START },
|
||||
{ startIndex:1, type: htmlTokenTypes.getTag('abc') },
|
||||
{ startIndex:4, type: htmlTokenTypes.DELIM_END },
|
||||
{ startIndex:5, type: htmlTokenTypes.DELIM_START },
|
||||
// { startIndex:5, type: htmlTokenTypes.DELIM_START },
|
||||
{ startIndex:6, type: htmlTokenTypes.getTag('script') },
|
||||
{ startIndex:12, type: htmlTokenTypes.DELIM_END },
|
||||
{ startIndex:13, type: '' },
|
||||
|
|
@ -1787,7 +1787,7 @@ testTokenization(['php', 'css'], [
|
|||
{ startIndex:0, type: htmlTokenTypes.DELIM_START },
|
||||
{ startIndex:1, type: htmlTokenTypes.getTag('html') },
|
||||
{ startIndex:5, type: htmlTokenTypes.DELIM_END },
|
||||
{ startIndex:6, type: htmlTokenTypes.DELIM_START },
|
||||
// { startIndex:6, type: htmlTokenTypes.DELIM_START },
|
||||
{ startIndex:7, type: htmlTokenTypes.getTag('style') },
|
||||
{ startIndex:12, type: htmlTokenTypes.DELIM_END },
|
||||
{ startIndex:13, type: 'metatag.php' },
|
||||
|
|
@ -1821,7 +1821,7 @@ testTokenization(['php', 'css'], [
|
|||
{ startIndex:137, type: htmlTokenTypes.DELIM_START },
|
||||
{ startIndex:139, type: htmlTokenTypes.getTag('script') },
|
||||
{ startIndex:145, type: htmlTokenTypes.DELIM_END },
|
||||
{ startIndex:146, type: htmlTokenTypes.DELIM_START },
|
||||
// { startIndex:146, type: htmlTokenTypes.DELIM_START },
|
||||
{ startIndex:148, type: htmlTokenTypes.getTag('html') },
|
||||
{ startIndex:152, type: htmlTokenTypes.DELIM_END },
|
||||
{ startIndex:153, type: 'metatag.php' },
|
||||
|
|
|
|||
|
|
@ -421,49 +421,38 @@ testTokenization('sql', [
|
|||
{ startIndex: 7, type: 'white.sql' },
|
||||
{ startIndex: 8, type: 'identifier.sql' },
|
||||
{ startIndex: 10, type: 'operator.sql' },
|
||||
{ startIndex: 11, type: 'string.quote.sql' },
|
||||
{ startIndex: 12, type: 'string.sql' },
|
||||
{ startIndex: 20, type: 'string.quote.sql' },
|
||||
{ startIndex: 11, type: 'string.sql' },
|
||||
{ startIndex: 21, type: 'delimiter.sql' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '\'a \'\' string with quotes\'',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'string.quote.sql' },
|
||||
{ startIndex: 1, type: 'string.sql' },
|
||||
{ startIndex: 24, type: 'string.quote.sql' }
|
||||
{ startIndex: 0, type: 'string.sql' },
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '\'a " string with quotes\'',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'string.quote.sql' },
|
||||
{ startIndex: 1, type: 'string.sql' },
|
||||
{ startIndex: 23, type: 'string.quote.sql' }
|
||||
{ startIndex: 0, type: 'string.sql' },
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '\'a -- string with comment\'',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'string.quote.sql' },
|
||||
{ startIndex: 1, type: 'string.sql' },
|
||||
{ startIndex: 25, type: 'string.quote.sql' }
|
||||
{ startIndex: 0, type: 'string.sql' },
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: 'N\'a unicode string\'',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'string.quote.sql' },
|
||||
{ startIndex: 2, type: 'string.sql' },
|
||||
{ startIndex: 18, type: 'string.quote.sql' }
|
||||
{ startIndex: 0, type: 'string.sql' },
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '\'a endless string',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'string.quote.sql' },
|
||||
{ startIndex: 1, type: 'string.sql' }
|
||||
{ startIndex: 0, type: 'string.sql' },
|
||||
]}],
|
||||
|
||||
// Operators
|
||||
|
|
|
|||
268
test/xml.test.ts
268
test/xml.test.ts
|
|
@ -12,36 +12,36 @@ testTokenization('xml', [
|
|||
[{
|
||||
line: '<person>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-person.xml' },
|
||||
{ startIndex: 7, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 7, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<person/>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-person.xml' },
|
||||
{ startIndex: 8, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 8, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<person >',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-person.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 7, type: '' },
|
||||
{ startIndex: 8, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 8, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<person />',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-person.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 7, type: '' },
|
||||
{ startIndex: 8, type: 'tag.tag-person.xml' },
|
||||
{ startIndex: 9, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 8, type: 'tag.xml' },
|
||||
{ startIndex: 9, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Incomplete Start Tag
|
||||
|
|
@ -54,15 +54,15 @@ testTokenization('xml', [
|
|||
[{
|
||||
line: '<person',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-person.xml' }
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<input',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-input.xml' }
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' }
|
||||
]}],
|
||||
|
||||
// Invalid Open Start Tag
|
||||
|
|
@ -82,8 +82,8 @@ testTokenization('xml', [
|
|||
line: 'i <person;',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 2, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 3, type: 'tag.tag-person.xml' },
|
||||
{ startIndex: 2, type: 'delimiter.xml' },
|
||||
{ startIndex: 3, type: 'tag.xml' },
|
||||
{ startIndex: 9, type: '' }
|
||||
]}],
|
||||
|
||||
|
|
@ -91,45 +91,45 @@ testTokenization('xml', [
|
|||
[{
|
||||
line: '<tool name="">',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 11, type: 'attribute.value.xml' },
|
||||
{ startIndex: 13, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 13, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<tool name="Monaco">',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 11, type: 'attribute.value.xml' },
|
||||
{ startIndex: 19, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 19, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<tool name=\'Monaco\'>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 11, type: 'attribute.value.xml' },
|
||||
{ startIndex: 19, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 19, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Tag with Attributes
|
||||
[{
|
||||
line: '<tool name="Monaco" version="1.0">',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
|
|
@ -138,101 +138,101 @@ testTokenization('xml', [
|
|||
{ startIndex: 20, type: 'attribute.name.xml' },
|
||||
{ startIndex: 27, type: '' },
|
||||
{ startIndex: 28, type: 'attribute.value.xml' },
|
||||
{ startIndex: 33, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 33, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Tag with Name-Only-Attribute
|
||||
[{
|
||||
line: '<tool name>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 10, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<tool name version>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 11, type: 'attribute.name.xml' },
|
||||
{ startIndex: 18, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 18, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Tag with Attribute And Whitespace
|
||||
[{
|
||||
line: '<tool name= "monaco">',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 13, type: 'attribute.value.xml' },
|
||||
{ startIndex: 21, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 21, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<tool name = "monaco">',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 13, type: 'attribute.value.xml' },
|
||||
{ startIndex: 21, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 21, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Tag with Invalid Attribute Name
|
||||
[{
|
||||
line: '<tool name!@#="bar">',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 15, type: 'attribute.name.xml' },
|
||||
{ startIndex: 18, type: '' },
|
||||
{ startIndex: 19, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 19, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Tag with Invalid Attribute Value
|
||||
[{
|
||||
line: '<tool name=">',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tool.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 11, type: 'attribute.value.xml' },
|
||||
{ startIndex: 12, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 12, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Complete End Tag
|
||||
[{
|
||||
line: '</person>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-person.xml' },
|
||||
{ startIndex: 8, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 8, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Complete End Tag with Whitespace
|
||||
[{
|
||||
line: '</person >',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-person.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 8, type: '' },
|
||||
{ startIndex: 10, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 10, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Incomplete End Tag
|
||||
|
|
@ -279,23 +279,23 @@ testTokenization('xml', [
|
|||
[{
|
||||
line: '<tools><![CDATA[<person/>]]></tools>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tools.xml' },
|
||||
{ startIndex: 6, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 6, type: 'delimiter.xml' },
|
||||
{ startIndex: 7, type: 'delimiter.cdata.xml' },
|
||||
{ startIndex: 16, type: '' },
|
||||
{ startIndex: 25, type: 'delimiter.cdata.xml' },
|
||||
{ startIndex: 28, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 30, type: 'tag.tag-tools.xml' },
|
||||
{ startIndex: 35, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 28, type: 'delimiter.xml' },
|
||||
{ startIndex: 30, type: 'tag.xml' },
|
||||
{ startIndex: 35, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
[{
|
||||
line: '<tools>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-tools.xml' },
|
||||
{ startIndex: 6, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 6, type: 'delimiter.xml' }
|
||||
]},{
|
||||
line: '\t<![CDATA[',
|
||||
tokens: [
|
||||
|
|
@ -313,45 +313,45 @@ testTokenization('xml', [
|
|||
]},{
|
||||
line: '</tools>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-tools.xml' },
|
||||
{ startIndex: 7, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 7, type: 'delimiter.xml' }
|
||||
]}],
|
||||
|
||||
// Generated from sample
|
||||
[{
|
||||
line: '<?xml version="1.0"?>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 2, type: 'metatag.instruction.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'metatag.xml' },
|
||||
{ startIndex: 5, type: '' },
|
||||
{ startIndex: 6, type: 'attribute.name.xml' },
|
||||
{ startIndex: 13, type: '' },
|
||||
{ startIndex: 14, type: 'attribute.value.xml' },
|
||||
{ startIndex: 19, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 19, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: '<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'tag.tag-configuration.xml' },
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 1, type: 'tag.xml' },
|
||||
{ startIndex: 14, type: '' },
|
||||
{ startIndex: 15, type: 'attribute.name.xml' },
|
||||
{ startIndex: 24, type: '' },
|
||||
{ startIndex: 25, type: 'attribute.value.xml' },
|
||||
{ startIndex: 78, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 78, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <connectionStrings>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 2, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 3, type: 'tag.tag-connectionstrings.xml' },
|
||||
{ startIndex: 20, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 2, type: 'delimiter.xml' },
|
||||
{ startIndex: 3, type: 'tag.xml' },
|
||||
{ startIndex: 20, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <add name="MyDB" ',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 4, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 5, type: 'tag.tag-add.xml' },
|
||||
{ startIndex: 4, type: 'delimiter.xml' },
|
||||
{ startIndex: 5, type: 'tag.xml' },
|
||||
{ startIndex: 8, type: '' },
|
||||
{ startIndex: 9, type: 'attribute.name.xml' },
|
||||
{ startIndex: 13, type: '' },
|
||||
|
|
@ -376,28 +376,28 @@ testTokenization('xml', [
|
|||
{ startIndex: 36, type: 'attribute.name.xml' },
|
||||
{ startIndex: 47, type: '' },
|
||||
{ startIndex: 48, type: 'attribute.value.xml' },
|
||||
{ startIndex: 61, type: 'tag.tag-add.xml' },
|
||||
{ startIndex: 62, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 61, type: 'tag.xml' },
|
||||
{ startIndex: 62, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' </connectionStrings>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 2, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 4, type: 'tag.tag-connectionstrings.xml' },
|
||||
{ startIndex: 21, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 2, type: 'delimiter.xml' },
|
||||
{ startIndex: 4, type: 'tag.xml' },
|
||||
{ startIndex: 21, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <system.web>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 2, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 3, type: 'tag.tag-system.web.xml' },
|
||||
{ startIndex: 13, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 2, type: 'delimiter.xml' },
|
||||
{ startIndex: 3, type: 'tag.xml' },
|
||||
{ startIndex: 13, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <customErrors defaultRedirect="GenericError.htm"',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 4, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 5, type: 'tag.tag-customerrors.xml' },
|
||||
{ startIndex: 4, type: 'delimiter.xml' },
|
||||
{ startIndex: 5, type: 'tag.xml' },
|
||||
{ startIndex: 17, type: '' },
|
||||
{ startIndex: 18, type: 'attribute.name.xml' },
|
||||
{ startIndex: 33, type: '' },
|
||||
|
|
@ -413,13 +413,13 @@ testTokenization('xml', [
|
|||
{ startIndex: 24, type: 'attribute.name.xml' },
|
||||
{ startIndex: 37, type: '' },
|
||||
{ startIndex: 38, type: 'attribute.value.xml' },
|
||||
{ startIndex: 47, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 47, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <error statusCode="500" redirect="InternalError.htm"/>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 6, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 7, type: 'tag.tag-error.xml' },
|
||||
{ startIndex: 6, type: 'delimiter.xml' },
|
||||
{ startIndex: 7, type: 'tag.xml' },
|
||||
{ startIndex: 12, type: '' },
|
||||
{ startIndex: 13, type: 'attribute.name.xml' },
|
||||
{ startIndex: 23, type: '' },
|
||||
|
|
@ -428,22 +428,22 @@ testTokenization('xml', [
|
|||
{ startIndex: 30, type: 'attribute.name.xml' },
|
||||
{ startIndex: 38, type: '' },
|
||||
{ startIndex: 39, type: 'attribute.value.xml' },
|
||||
{ startIndex: 58, type: 'tag.tag-error.xml' },
|
||||
{ startIndex: 59, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 58, type: 'tag.xml' },
|
||||
{ startIndex: 59, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' </customErrors>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 4, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 6, type: 'tag.tag-customerrors.xml' },
|
||||
{ startIndex: 18, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 4, type: 'delimiter.xml' },
|
||||
{ startIndex: 6, type: 'tag.xml' },
|
||||
{ startIndex: 18, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' </system.web>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 2, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 4, type: 'tag.tag-system.web.xml' },
|
||||
{ startIndex: 14, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 2, type: 'delimiter.xml' },
|
||||
{ startIndex: 4, type: 'tag.xml' },
|
||||
{ startIndex: 14, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' ',
|
||||
tokens: [
|
||||
|
|
@ -474,100 +474,100 @@ testTokenization('xml', [
|
|||
line: ' <!DOCTYPE another meta tag>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 1, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 3, type: 'metatag.declaration.xml' },
|
||||
{ startIndex: 1, type: 'delimiter.xml' },
|
||||
{ startIndex: 3, type: 'metatag.xml' },
|
||||
{ startIndex: 10, type: '' },
|
||||
{ startIndex: 11, type: 'attribute.name.xml' },
|
||||
{ startIndex: 18, type: '' },
|
||||
{ startIndex: 19, type: 'attribute.name.xml' },
|
||||
{ startIndex: 23, type: '' },
|
||||
{ startIndex: 24, type: 'attribute.name.xml' },
|
||||
{ startIndex: 27, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 27, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <tools><![CDATA[Some text and tags <person/>]]></tools>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 1, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-tools.xml' },
|
||||
{ startIndex: 7, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 1, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 7, type: 'delimiter.xml' },
|
||||
{ startIndex: 8, type: 'delimiter.cdata.xml' },
|
||||
{ startIndex: 17, type: '' },
|
||||
{ startIndex: 45, type: 'delimiter.cdata.xml' },
|
||||
{ startIndex: 48, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 50, type: 'tag.tag-tools.xml' },
|
||||
{ startIndex: 55, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 48, type: 'delimiter.xml' },
|
||||
{ startIndex: 50, type: 'tag.xml' },
|
||||
{ startIndex: 55, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <aSelfClosingTag with="attribute" />',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 1, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-aselfclosingtag.xml' },
|
||||
{ startIndex: 1, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 17, type: '' },
|
||||
{ startIndex: 18, type: 'attribute.name.xml' },
|
||||
{ startIndex: 22, type: '' },
|
||||
{ startIndex: 23, type: 'attribute.value.xml' },
|
||||
{ startIndex: 34, type: '' },
|
||||
{ startIndex: 35, type: 'tag.tag-aselfclosingtag.xml' },
|
||||
{ startIndex: 36, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 35, type: 'tag.xml' },
|
||||
{ startIndex: 36, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <aSelfClosingTag with="attribute"/>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 1, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-aselfclosingtag.xml' },
|
||||
{ startIndex: 1, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 17, type: '' },
|
||||
{ startIndex: 18, type: 'attribute.name.xml' },
|
||||
{ startIndex: 22, type: '' },
|
||||
{ startIndex: 23, type: 'attribute.value.xml' },
|
||||
{ startIndex: 34, type: 'tag.tag-aselfclosingtag.xml' },
|
||||
{ startIndex: 35, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 34, type: 'tag.xml' },
|
||||
{ startIndex: 35, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <namespace:aSelfClosingTag otherspace:with="attribute"/>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 1, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-namespace:aselfclosingtag.xml' },
|
||||
{ startIndex: 1, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 27, type: '' },
|
||||
{ startIndex: 28, type: 'attribute.name.xml' },
|
||||
{ startIndex: 43, type: '' },
|
||||
{ startIndex: 44, type: 'attribute.value.xml' },
|
||||
{ startIndex: 55, type: 'tag.tag-namespace:aselfclosingtag.xml' },
|
||||
{ startIndex: 56, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 55, type: 'tag.xml' },
|
||||
{ startIndex: 56, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <valid-name also_valid this.one=\'too is valid\'/>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 1, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-valid-name.xml' },
|
||||
{ startIndex: 1, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 12, type: '' },
|
||||
{ startIndex: 13, type: 'attribute.name.xml' },
|
||||
{ startIndex: 23, type: '' },
|
||||
{ startIndex: 24, type: 'attribute.name.xml' },
|
||||
{ startIndex: 32, type: '' },
|
||||
{ startIndex: 33, type: 'attribute.value.xml' },
|
||||
{ startIndex: 47, type: 'tag.tag-valid-name.xml' },
|
||||
{ startIndex: 48, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 47, type: 'tag.xml' },
|
||||
{ startIndex: 48, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <aSimpleSelfClosingTag />',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 1, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-asimpleselfclosingtag.xml' },
|
||||
{ startIndex: 1, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 23, type: '' },
|
||||
{ startIndex: 24, type: 'tag.tag-asimpleselfclosingtag.xml' },
|
||||
{ startIndex: 25, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 24, type: 'tag.xml' },
|
||||
{ startIndex: 25, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: ' <aSimpleSelfClosingTag/>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: '' },
|
||||
{ startIndex: 1, type: 'delimiter.start.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-asimpleselfclosingtag.xml' },
|
||||
{ startIndex: 24, type: 'delimiter.start.xml' }
|
||||
{ startIndex: 1, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 24, type: 'delimiter.xml' }
|
||||
]}, {
|
||||
line: '</configuration>',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'delimiter.end.xml' },
|
||||
{ startIndex: 2, type: 'tag.tag-configuration.xml' },
|
||||
{ startIndex: 15, type: 'delimiter.end.xml' }
|
||||
{ startIndex: 0, type: 'delimiter.xml' },
|
||||
{ startIndex: 2, type: 'tag.xml' },
|
||||
{ startIndex: 15, type: 'delimiter.xml' }
|
||||
]}]
|
||||
]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue