@wooorm/starry-night
Version:
Syntax highlighting, like GitHub
262 lines (259 loc) • 9.74 kB
JavaScript
// This is a TextMate grammar distributed by `starry-night`.
// This grammar is licensed permissive.
// See <https://github.com/wooorm/starry-night> for more info.
/**
* @import {Grammar} from '@wooorm/starry-night'
*/
/** @type {Grammar} */
const grammar = {
extensions: [],
names: [],
patterns: [
{
begin: '(/\\*\\*)\\s*$',
beginCaptures: {
1: {name: 'punctuation.definition.comment.begin.javadoc'}
},
contentName: 'text.html',
end: '\\*/',
endCaptures: {0: {name: 'punctuation.definition.comment.end.javadoc'}},
name: 'comment.block.documentation.javadoc',
patterns: [
{include: '#inline'},
{
begin: '((\\@)param)',
beginCaptures: {
1: {name: 'keyword.other.documentation.param.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.param.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)return)',
beginCaptures: {
1: {name: 'keyword.other.documentation.return.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.return.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)throws)',
beginCaptures: {
1: {name: 'keyword.other.documentation.throws.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.throws.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)exception)',
beginCaptures: {
1: {name: 'keyword.other.documentation.exception.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.exception.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)author)',
beginCaptures: {
1: {name: 'keyword.other.documentation.author.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.author.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)version)',
beginCaptures: {
1: {name: 'keyword.other.documentation.version.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.version.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)see)',
beginCaptures: {
1: {name: 'keyword.other.documentation.see.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.see.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)since)',
beginCaptures: {
1: {name: 'keyword.other.documentation.since.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.since.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)serial)',
beginCaptures: {
1: {name: 'keyword.other.documentation.serial.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.serial.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)serialField)',
beginCaptures: {
1: {name: 'keyword.other.documentation.serialField.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.serialField.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)serialData)',
beginCaptures: {
1: {name: 'keyword.other.documentation.serialData.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.serialData.javadoc',
patterns: [{include: '#inline'}]
},
{
begin: '((\\@)deprecated)',
beginCaptures: {
1: {name: 'keyword.other.documentation.deprecated.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
end: '(?=^\\s*\\*?\\s*@|\\*/)',
name: 'meta.documentation.tag.deprecated.javadoc',
patterns: [{include: '#inline'}]
},
{
captures: {
1: {name: 'keyword.other.documentation.custom.javadoc'},
2: {name: 'punctuation.definition.keyword.javadoc'}
},
match: '((\\@)\\S+)\\s'
}
]
}
],
repository: {
inline: {
patterns: [
{include: '#inline-formatting'},
{
match:
'<(?!(a|abbr|acronym|address|area|b|bdo|big|blockquote|br|caption|cite|code|colgroup|dd|del|div|dfn|dl|dt|em|fieldset|font|h1toh6|hr|i|img|ins|kbd|li|ol|p|pre|q|samp|small|span|strong|sub|sup|table|tbody|td|tfoot|th|thread|tr|tt|u|ul)\\b[^>]*>)'
},
{include: 'text.html.basic'},
{
match:
'((https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt)://|mailto:)[-:@a-zA-Z0-9_.,~%+/?=&#;]+(?<![-.,?:#;])',
name: 'markup.underline.link'
}
]
},
'inline-formatting': {
patterns: [
{
begin: '(\\{)((\\@)code)',
beginCaptures: {
1: {name: 'punctuation.definition.tag.begin.javadoc'},
2: {name: 'keyword.other.documentation.directive.code.javadoc'},
3: {name: 'punctuation.definition.keyword.javadoc'}
},
contentName: 'markup.raw.code.javadoc',
end: '\\}',
endCaptures: {0: {name: 'punctuation.definition.tag.end.javadoc'}},
name: 'meta.tag.template.code.javadoc'
},
{
begin: '(\\{)((\\@)literal)',
beginCaptures: {
1: {name: 'punctuation.definition.tag.begin.javadoc'},
2: {name: 'keyword.other.documentation.directive.literal.javadoc'},
3: {name: 'punctuation.definition.keyword.javadoc'}
},
contentName: 'markup.raw.literal.javadoc',
end: '\\}',
endCaptures: {0: {name: 'punctuation.definition.tag.end.javadoc'}},
name: 'meta.tag.template.literal.javadoc'
},
{
captures: {
1: {name: 'punctuation.definition.tag.begin.javadoc'},
2: {name: 'keyword.other.documentation.directive.docRoot.javadoc'},
3: {name: 'punctuation.definition.keyword.javadoc'},
4: {name: 'punctuation.definition.tag.end.javadoc'}
},
match: '(\\{)((\\@)docRoot)(\\})',
name: 'meta.tag.template.docRoot.javadoc'
},
{
captures: {
1: {name: 'punctuation.definition.tag.begin.javadoc'},
2: {
name: 'keyword.other.documentation.directive.inheritDoc.javadoc'
},
3: {name: 'punctuation.definition.keyword.javadoc'},
4: {name: 'punctuation.definition.tag.end.javadoc'}
},
match: '(\\{)((\\@)inheritDoc)(\\})',
name: 'meta.tag.template.inheritDoc.javadoc'
},
{
captures: {
1: {name: 'punctuation.definition.tag.begin.javadoc'},
2: {name: 'keyword.other.documentation.directive.link.javadoc'},
3: {name: 'punctuation.definition.keyword.javadoc'},
4: {name: 'markup.underline.link.javadoc'},
5: {name: 'string.other.link.title.javadoc'},
6: {name: 'punctuation.definition.tag.end.javadoc'}
},
match: '(\\{)((\\@)link)(?:\\s+(\\S+?))?(?:\\s+(.+?))?\\s*(\\})',
name: 'meta.tag.template.link.javadoc'
},
{
captures: {
1: {name: 'punctuation.definition.tag.begin.javadoc'},
2: {
name: 'keyword.other.documentation.directive.linkplain.javadoc'
},
3: {name: 'punctuation.definition.keyword.javadoc'},
4: {name: 'markup.underline.linkplain.javadoc'},
5: {name: 'string.other.link.title.javadoc'},
6: {name: 'punctuation.definition.tag.end.javadoc'}
},
match: '(\\{)((\\@)linkplain)(?:\\s+(\\S+?))?(?:\\s+(.+?))?\\s*(\\})',
name: 'meta.tag.template.linkplain.javadoc'
},
{
captures: {
1: {name: 'punctuation.definition.tag.begin.javadoc'},
2: {name: 'keyword.other.documentation.directive.value.javadoc'},
3: {name: 'punctuation.definition.keyword.javadoc'},
4: {name: 'variable.other.javadoc'},
5: {name: 'punctuation.definition.tag.end.javadoc'}
},
match: '(\\{)((\\@)value)\\s*(\\S+?)?\\s*(\\})',
name: 'meta.tag.template.value.javadoc'
}
]
}
},
scopeName: 'text.html.javadoc'
}
export default grammar