commit
bcd7a108ac
@ -0,0 +1,14 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* 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';
|
||||||
|
|
||||||
|
registerLanguage({
|
||||||
|
id: 'restructuredtext',
|
||||||
|
extensions: ['.rst'],
|
||||||
|
aliases: ['reStructuredText', 'restructuredtext'],
|
||||||
|
loader: () => import('./restructuredtext')
|
||||||
|
});
|
@ -0,0 +1,492 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* 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 '../test/testRunner';
|
||||||
|
|
||||||
|
testTokenization('restructuredtext', [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '#####',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: 'strong **strong**',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 7, type: 'strong.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: 'emphasis *emphasis*',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 9, type: 'emphasis.rst' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '.. [23] This is the footnote',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 6, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '.. [#ab] This is the footnote',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 7, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '.. [#] This is the footnote',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 5, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '.. [*] This is the footnote',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 5, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '',
|
||||||
|
tokens: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' .. [23] This is not the footnote',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '[23]_',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 1, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 3, type: '' }
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '[*]_',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 1, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 2, type: '' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '[#]_',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 1, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 2, type: '' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '[#abc]_ [#]_',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 1, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 5, type: '' },
|
||||||
|
{ startIndex: 9, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 10, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '.. [A3] This is the citation',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 6, type: '' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: ' .. [A3] This is not the citation',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '.. [A3] This is the citation',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 6, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' first line',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' second line',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: 'new line starts',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '[A3]_',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 1, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 3, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: 'Interpreted Text `text`',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' .. _`text`: paragraph',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 6, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 10, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: 'Interpreted Text :role:`text`',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 18, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 22, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: 'Interpreted Text `text`:role:',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 24, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 28, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '.. note:: This is a directive',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 3, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 7, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: 'link .. _link: this is not a hyperlink',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '.. _link: this is a hyperlink',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 8, type: '' },
|
||||||
|
{ startIndex: 10, type: 'string.link.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '.. _`link`: this is a hyperlink',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 10, type: '' },
|
||||||
|
{ startIndex: 12, type: 'string.link.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '.. __: this is a anonymous hyperlink',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 7, type: 'string.link.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '__: this is a anonymous hyperlink',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '...... _`this is a inline internal target`',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 9, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 41, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '.. |biohazard| image:: biohazard.png',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 13, type: '' },
|
||||||
|
{ startIndex: 15, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 20, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '... |biohazard| ...',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 5, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 14, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: 'ref_ `ref`_ ref__ `ref`__',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 3, type: '' },
|
||||||
|
{ startIndex: 5, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 10, type: '' },
|
||||||
|
{ startIndex: 12, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 15, type: '' },
|
||||||
|
{ startIndex: 18, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 23, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '.... `title <http://google.com>`_',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 6, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 12, type: '' },
|
||||||
|
{ startIndex: 13, type: 'string.link.rst' },
|
||||||
|
{ startIndex: 30, type: '' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '::',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '',
|
||||||
|
tokens: [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' first line',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 1, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' second line',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 1, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '',
|
||||||
|
tokens: [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' paragraph',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: 'desc ::',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 4, type: 'keyword.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '',
|
||||||
|
tokens: [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '>>first line',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 2, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '>',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '>second line',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 1, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '',
|
||||||
|
tokens: [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' paragraph',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '.. comment',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
{ startIndex: 2, type: 'comment.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' firstline',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'comment.rst' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '',
|
||||||
|
tokens: [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' paragraph',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '==',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: '' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '===',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '1. item',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 3, type: '' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: 'a. item',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 3, type: '' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '* item',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 2, type: '' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '- item',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 2, type: '' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '1) item',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 3, type: '' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '(a) item',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
{ startIndex: 4, type: '' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '+------------------------+------------+----------+----------+',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '+========================+============+==========+==========+',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.rst' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
]);
|
@ -0,0 +1,169 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* 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: [
|
||||||
|
{ open: '{', close: '}' },
|
||||||
|
{ open: '[', close: ']' },
|
||||||
|
{ open: '(', close: ')' },
|
||||||
|
{ open: '<', close: '>', notIn: ['string'] }
|
||||||
|
],
|
||||||
|
surroundingPairs: [
|
||||||
|
{ open: '(', close: ')' },
|
||||||
|
{ open: '[', close: ']' },
|
||||||
|
{ open: '`', close: '`' },
|
||||||
|
],
|
||||||
|
folding: {
|
||||||
|
markers: {
|
||||||
|
start: new RegExp("^\\s*<!--\\s*#?region\\b.*-->"),
|
||||||
|
end: new RegExp("^\\s*<!--\\s*#?endregion\\b.*-->")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const language = <ILanguage>{
|
||||||
|
defaultToken: '',
|
||||||
|
tokenPostfix: '.rst',
|
||||||
|
|
||||||
|
control: /[\\`*_\[\]{}()#+\-\.!]/,
|
||||||
|
escapes: /\\(?:@control)/,
|
||||||
|
|
||||||
|
empty: [
|
||||||
|
'area', 'base', 'basefont', 'br', 'col', 'frame',
|
||||||
|
'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param'
|
||||||
|
],
|
||||||
|
|
||||||
|
alphanumerics: /[A-Za-z0-9]/,
|
||||||
|
alphanumericsplus: /[A-Za-z0-9-_+:.]/,
|
||||||
|
simpleRefNameWithoutBq: /(?:@alphanumerics@alphanumericsplus*@alphanumerics)+|(?:@alphanumerics+)/,
|
||||||
|
simpleRefName: /(?:`@simpleRefNameWithoutBq`|@simpleRefNameWithoutBq)/,
|
||||||
|
phrase: /@simpleRefName(?:\s@simpleRefName)*/,
|
||||||
|
citationName: /[A-Za-z][A-Za-z0-9-_.]*/,
|
||||||
|
blockLiteralStart: /(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,
|
||||||
|
precedingChars: /(?:[ -:/'"<([{])/,
|
||||||
|
followingChars: /(?:[ -.,:;!?/'")\]}>]|$)/,
|
||||||
|
punctuation: /(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,
|
||||||
|
tokenizer: {
|
||||||
|
root: [
|
||||||
|
//sections
|
||||||
|
[/^(@punctuation{3,}$){1,1}?/, 'keyword'],
|
||||||
|
|
||||||
|
//line-blocks
|
||||||
|
//No rules on it
|
||||||
|
|
||||||
|
//bullet-lists
|
||||||
|
[/^\s*([\*\-+‣•]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/, 'keyword'],
|
||||||
|
|
||||||
|
//literal-blocks
|
||||||
|
[/([ ]::)\s*$/, 'keyword', '@blankLineOfLiteralBlocks'],
|
||||||
|
[/(::)\s*$/, 'keyword', '@blankLineOfLiteralBlocks'],
|
||||||
|
|
||||||
|
{ include: '@tables' },
|
||||||
|
|
||||||
|
{ include: '@explicitMarkupBlocks' },
|
||||||
|
|
||||||
|
{ include: '@inlineMarkup' },
|
||||||
|
],
|
||||||
|
explicitMarkupBlocks: [
|
||||||
|
//citations
|
||||||
|
{ include: '@citations' },
|
||||||
|
//footnotes
|
||||||
|
{ include: '@footnotes' },
|
||||||
|
//directives
|
||||||
|
[/^(\.\.\s)(@simpleRefName)(::\s)(.*)$/, [{ token: '', next: 'subsequentLines' }, 'keyword', '', '']],
|
||||||
|
|
||||||
|
//hyperlink-targets
|
||||||
|
[/^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/, [{ token: '', next: 'hyperlinks' }, '', '', 'string.link', '', '', 'string.link']],
|
||||||
|
|
||||||
|
//anonymous-hyperlinks
|
||||||
|
[/^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/, [{ token: '', next: 'subsequentLines' }, '', '', '', 'string.link']],
|
||||||
|
[/^(__\s+)(.+)/, ['', 'string.link']],
|
||||||
|
|
||||||
|
//substitution-definitions
|
||||||
|
[/^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/, [{ token: '', next: 'subsequentLines' }, '', 'string.link', '', 'keyword', ''], '@rawBlocks'],
|
||||||
|
[/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/, ['', 'string.link', '']],
|
||||||
|
|
||||||
|
//comments
|
||||||
|
[/^(\.\.)([ ].*)$/, [{ token: '', next: '@comments' }, 'comment']],
|
||||||
|
],
|
||||||
|
inlineMarkup: [
|
||||||
|
{ include: '@citationsReference' },
|
||||||
|
{ include: '@footnotesReference' },
|
||||||
|
|
||||||
|
//hyperlink-references
|
||||||
|
[/(@simpleRefName)(_{1,2})/, ['string.link', '']],
|
||||||
|
|
||||||
|
//embedded-uris-and-aliases
|
||||||
|
[/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/, ['', 'string.link', '', 'string.link', '', '', '']],
|
||||||
|
|
||||||
|
//emphasis
|
||||||
|
[/\*\*([^\\*]|\*(?!\*))+\*\*/, 'strong'],
|
||||||
|
[/\*[^*]+\*/, 'emphasis'],
|
||||||
|
|
||||||
|
//inline-literals
|
||||||
|
[/(``)((?:[^`]|\`(?!`))+)(``)/, ['', 'keyword', '']],
|
||||||
|
[/(__\s+)(.+)/, ['', 'keyword']],
|
||||||
|
|
||||||
|
//interpreted-text
|
||||||
|
[/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/, ['', 'keyword', '', '', '']],
|
||||||
|
[/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/, ['', '', '', 'keyword', '']],
|
||||||
|
[/(`)([^`]+)(`)/, ''],
|
||||||
|
|
||||||
|
//inline-internal-targets
|
||||||
|
[/(_`)(@phrase)(`)/, ['', 'string.link', '']],
|
||||||
|
],
|
||||||
|
citations: [
|
||||||
|
[/^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/, [{ token: '', next: '@subsequentLines' }, 'string.link', '', '']],
|
||||||
|
],
|
||||||
|
citationsReference: [
|
||||||
|
[/(\[)(@citationName)(\]_)/, ['', 'string.link', '']],
|
||||||
|
],
|
||||||
|
footnotes: [
|
||||||
|
[/^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/, [{ token: '', next: '@subsequentLines' }, 'string.link', '']],
|
||||||
|
[/^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/, [{ token: '', next: '@subsequentLines' }, 'string.link', '', '']],
|
||||||
|
[/^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/, [{ token: '', next: '@subsequentLines' }, 'string.link', '', '']],
|
||||||
|
],
|
||||||
|
footnotesReference: [
|
||||||
|
[/(\[)([0-9]+)(\])(_)/, ['', 'string.link', '', '']],
|
||||||
|
[/(\[)(#@simpleRefName?)(\])(_)/, ['', 'string.link', '', '']],
|
||||||
|
[/(\[)(\*)(\])(_)/, ['', 'string.link', '', '']]
|
||||||
|
],
|
||||||
|
blankLineOfLiteralBlocks: [
|
||||||
|
[/^$/, '', '@subsequentLinesOfLiteralBlocks'],
|
||||||
|
[/^.*$/, '', '@pop'],
|
||||||
|
],
|
||||||
|
subsequentLinesOfLiteralBlocks: [
|
||||||
|
[/(@blockLiteralStart+)(.*)/, ['keyword', '']],
|
||||||
|
[/^(?!blockLiteralStart)/, '', '@popall']
|
||||||
|
],
|
||||||
|
subsequentLines: [
|
||||||
|
[/^[\s]+.*/, ''],
|
||||||
|
[/^(?!\s)/, '', '@pop'],
|
||||||
|
],
|
||||||
|
hyperlinks: [
|
||||||
|
[/^[\s]+.*/, 'string.link'],
|
||||||
|
[/^(?!\s)/, '', '@pop'],
|
||||||
|
],
|
||||||
|
comments: [
|
||||||
|
[/^[\s]+.*/, 'comment'],
|
||||||
|
[/^(?!\s)/, '', '@pop'],
|
||||||
|
],
|
||||||
|
tables: [
|
||||||
|
[/\+-[+-]+/, 'keyword'],
|
||||||
|
[/\+=[+=]+/, 'keyword'],
|
||||||
|
],
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue