64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
/*
|
|
Language: Scala
|
|
Author: Jan Berkel <jan.berkel@gmail.com>
|
|
*/
|
|
|
|
hljs.LANGUAGES['scala'] = function(hljs) {
|
|
var ANNOTATION = {
|
|
className: 'annotation', begin: '@[A-Za-z]+'
|
|
};
|
|
var STRING = {
|
|
className: 'string',
|
|
begin: 'u?r?"""', end: '"""',
|
|
relevance: 10
|
|
};
|
|
return {
|
|
defaultMode: {
|
|
keywords:
|
|
'type yield lazy override def with val var false true sealed abstract private trait ' +
|
|
'object null if for while throw finally protected extends import final return else ' +
|
|
'break new catch super class case package default try this match continue throws',
|
|
contains: [
|
|
{
|
|
className: 'javadoc',
|
|
begin: '/\\*\\*', end: '\\*/',
|
|
contains: [{
|
|
className: 'javadoctag',
|
|
begin: '@[A-Za-z]+'
|
|
}],
|
|
relevance: 10
|
|
},
|
|
hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE,
|
|
hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, STRING,
|
|
{
|
|
className: 'class',
|
|
begin: '((case )?class |object |trait )', end: '({|$)', // beginWithKeyword won't work because a single "case" shouldn't start this mode
|
|
illegal: ':',
|
|
keywords: 'case class trait object',
|
|
contains: [
|
|
{
|
|
beginWithKeyword: true,
|
|
keywords: 'extends with',
|
|
relevance: 10
|
|
},
|
|
{
|
|
className: 'title',
|
|
begin: hljs.UNDERSCORE_IDENT_RE
|
|
},
|
|
{
|
|
className: 'params',
|
|
begin: '\\(', end: '\\)',
|
|
contains: [
|
|
hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, STRING,
|
|
ANNOTATION
|
|
]
|
|
}
|
|
]
|
|
},
|
|
hljs.C_NUMBER_MODE,
|
|
ANNOTATION
|
|
]
|
|
}
|
|
};
|
|
}(hljs);
|