191 lines
4.3 KiB
JavaScript
191 lines
4.3 KiB
JavaScript
|
module.exports = function(hljs) {
|
||
|
return {
|
||
|
aliases: ['adoc'],
|
||
|
contains: [
|
||
|
// block comment
|
||
|
hljs.COMMENT(
|
||
|
'^/{4,}\\n',
|
||
|
'\\n/{4,}$',
|
||
|
// can also be done as...
|
||
|
//'^/{4,}$',
|
||
|
//'^/{4,}$',
|
||
|
{
|
||
|
relevance: 10
|
||
|
}
|
||
|
),
|
||
|
// line comment
|
||
|
hljs.COMMENT(
|
||
|
'^//',
|
||
|
'$',
|
||
|
{
|
||
|
relevance: 0
|
||
|
}
|
||
|
),
|
||
|
// title
|
||
|
{
|
||
|
className: 'title',
|
||
|
begin: '^\\.\\w.*$'
|
||
|
},
|
||
|
// example, admonition & sidebar blocks
|
||
|
{
|
||
|
begin: '^[=\\*]{4,}\\n',
|
||
|
end: '\\n^[=\\*]{4,}$',
|
||
|
relevance: 10
|
||
|
},
|
||
|
// headings
|
||
|
{
|
||
|
className: 'header',
|
||
|
begin: '^(={1,5}) .+?( \\1)?$',
|
||
|
relevance: 10
|
||
|
},
|
||
|
{
|
||
|
className: 'header',
|
||
|
begin: '^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$',
|
||
|
relevance: 10
|
||
|
},
|
||
|
// document attributes
|
||
|
{
|
||
|
className: 'attribute',
|
||
|
begin: '^:.+?:',
|
||
|
end: '\\s',
|
||
|
excludeEnd: true,
|
||
|
relevance: 10
|
||
|
},
|
||
|
// block attributes
|
||
|
{
|
||
|
className: 'attribute',
|
||
|
begin: '^\\[.+?\\]$',
|
||
|
relevance: 0
|
||
|
},
|
||
|
// quoteblocks
|
||
|
{
|
||
|
className: 'blockquote',
|
||
|
begin: '^_{4,}\\n',
|
||
|
end: '\\n_{4,}$',
|
||
|
relevance: 10
|
||
|
},
|
||
|
// listing and literal blocks
|
||
|
{
|
||
|
className: 'code',
|
||
|
begin: '^[\\-\\.]{4,}\\n',
|
||
|
end: '\\n[\\-\\.]{4,}$',
|
||
|
relevance: 10
|
||
|
},
|
||
|
// passthrough blocks
|
||
|
{
|
||
|
begin: '^\\+{4,}\\n',
|
||
|
end: '\\n\\+{4,}$',
|
||
|
contains: [
|
||
|
{
|
||
|
begin: '<', end: '>',
|
||
|
subLanguage: 'xml',
|
||
|
relevance: 0
|
||
|
}
|
||
|
],
|
||
|
relevance: 10
|
||
|
},
|
||
|
// lists (can only capture indicators)
|
||
|
{
|
||
|
className: 'bullet',
|
||
|
begin: '^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+'
|
||
|
},
|
||
|
// admonition
|
||
|
{
|
||
|
className: 'label',
|
||
|
begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+',
|
||
|
relevance: 10
|
||
|
},
|
||
|
// inline strong
|
||
|
{
|
||
|
className: 'strong',
|
||
|
// must not follow a word character or be followed by an asterisk or space
|
||
|
begin: '\\B\\*(?![\\*\\s])',
|
||
|
end: '(\\n{2}|\\*)',
|
||
|
// allow escaped asterisk followed by word char
|
||
|
contains: [
|
||
|
{
|
||
|
begin: '\\\\*\\w',
|
||
|
relevance: 0
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
// inline emphasis
|
||
|
{
|
||
|
className: 'emphasis',
|
||
|
// must not follow a word character or be followed by a single quote or space
|
||
|
begin: '\\B\'(?![\'\\s])',
|
||
|
end: '(\\n{2}|\')',
|
||
|
// allow escaped single quote followed by word char
|
||
|
contains: [
|
||
|
{
|
||
|
begin: '\\\\\'\\w',
|
||
|
relevance: 0
|
||
|
}
|
||
|
],
|
||
|
relevance: 0
|
||
|
},
|
||
|
// inline emphasis (alt)
|
||
|
{
|
||
|
className: 'emphasis',
|
||
|
// must not follow a word character or be followed by an underline or space
|
||
|
begin: '_(?![_\\s])',
|
||
|
end: '(\\n{2}|_)',
|
||
|
relevance: 0
|
||
|
},
|
||
|
// inline smart quotes
|
||
|
{
|
||
|
className: 'smartquote',
|
||
|
variants: [
|
||
|
{begin: "``.+?''"},
|
||
|
{begin: "`.+?'"}
|
||
|
]
|
||
|
},
|
||
|
// inline code snippets (TODO should get same treatment as strong and emphasis)
|
||
|
{
|
||
|
className: 'code',
|
||
|
begin: '(`.+?`|\\+.+?\\+)',
|
||
|
relevance: 0
|
||
|
},
|
||
|
// indented literal block
|
||
|
{
|
||
|
className: 'code',
|
||
|
begin: '^[ \\t]',
|
||
|
end: '$',
|
||
|
relevance: 0
|
||
|
},
|
||
|
// horizontal rules
|
||
|
{
|
||
|
className: 'horizontal_rule',
|
||
|
begin: '^\'{3,}[ \\t]*$',
|
||
|
relevance: 10
|
||
|
},
|
||
|
// images and links
|
||
|
{
|
||
|
begin: '(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]',
|
||
|
returnBegin: true,
|
||
|
contains: [
|
||
|
{
|
||
|
//className: 'macro',
|
||
|
begin: '(link|image:?):',
|
||
|
relevance: 0
|
||
|
},
|
||
|
{
|
||
|
className: 'link_url',
|
||
|
begin: '\\w',
|
||
|
end: '[^\\[]+',
|
||
|
relevance: 0
|
||
|
},
|
||
|
{
|
||
|
className: 'link_label',
|
||
|
begin: '\\[',
|
||
|
end: '\\]',
|
||
|
excludeBegin: true,
|
||
|
excludeEnd: true,
|
||
|
relevance: 0
|
||
|
}
|
||
|
],
|
||
|
relevance: 10
|
||
|
}
|
||
|
]
|
||
|
};
|
||
|
};
|