0
This repository has been archived on 2024-08-27. You can view files and clone it, but cannot push or open issues or pull requests.
highlight_js-rails/vendor/assets/javascripts/highlight_js/languages/groovy.js
2015-01-25 16:00:01 +01:00

93 lines
3.0 KiB
JavaScript

/*
Language: Groovy
Author: Guillaume Laforge <glaforge@gmail.com>
Website: http://glaforge.appspot.com
Description: Groovy programming language implementation inspired from Vsevolod's Java mode
*/
function(hljs) {
return {
keywords: {
typename: 'byte short char int long boolean float double void',
literal : 'true false null',
keyword:
// groovy specific keywords
'def as in assert trait ' +
// common keywords with Java
'super this abstract static volatile transient public private protected synchronized final ' +
'class interface enum if else for while switch case break default continue ' +
'throw throws try catch finally implements extends new import package return instanceof'
},
contains: [
hljs.C_LINE_COMMENT_MODE,
{
className: 'javadoc',
begin: '/\\*\\*', end: '\\*//*',
relevance: 0,
contains: [
{
className: 'javadoctag', begin: '(^|\\s)@[A-Za-z]+'
}
]
},
hljs.C_BLOCK_COMMENT_MODE,
{
className: 'string',
begin: '"""', end: '"""'
},
{
className: 'string',
begin: "'''", end: "'''"
},
{
className: 'string',
begin: "\\$/", end: "/\\$",
relevance: 10
},
hljs.APOS_STRING_MODE,
{
className: 'regexp',
begin: /~?\/[^\/\n]+\//,
contains: [
hljs.BACKSLASH_ESCAPE
]
},
hljs.QUOTE_STRING_MODE,
{
className: 'shebang',
begin: "^#!/usr/bin/env", end: '$',
illegal: '\n'
},
hljs.BINARY_NUMBER_MODE,
{
className: 'class',
beginKeywords: 'class interface trait enum', end: '{',
illegal: ':',
contains: [
{beginKeywords: 'extends implements'},
hljs.UNDERSCORE_TITLE_MODE,
]
},
hljs.C_NUMBER_MODE,
{
className: 'annotation', begin: '@[A-Za-z]+'
},
{
// highlight map keys and named parameters as strings
className: 'string', begin: /[^\?]{0}[A-Za-z0-9_$]+ *:/
},
{
// catch middle element of the ternary operator
// to avoid highlight it as a label, named parameter, or map key
begin: /\?/, end: /\:/
},
{
// highlight labeled statements
className: 'label', begin: '^\\s*[A-Za-z0-9_$]+:',
relevance: 0
},
]
}
}