mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-11-04 12:28:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
 Language: Groovy
 | 
						|
 Author: Guillaume Laforge <glaforge@gmail.com>
 | 
						|
 Description: Groovy programming language implementation inspired from Vsevolod's Java mode
 | 
						|
 Website: https://groovy-lang.org
 | 
						|
 */
 | 
						|
 | 
						|
export default function(hljs) {
 | 
						|
    return {
 | 
						|
        name: 'Groovy',
 | 
						|
        keywords: {
 | 
						|
            literal : 'true false null',
 | 
						|
            keyword:
 | 
						|
            'byte short char int long boolean float double void ' +
 | 
						|
            // 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.COMMENT(
 | 
						|
                '/\\*\\*',
 | 
						|
                '\\*/',
 | 
						|
                {
 | 
						|
                    relevance : 0,
 | 
						|
                    contains : [
 | 
						|
                      {
 | 
						|
                          // eat up @'s in emails to prevent them to be recognized as doctags
 | 
						|
                          begin: /\w+@/, relevance: 0
 | 
						|
                      },
 | 
						|
                      {
 | 
						|
                          className : 'doctag',
 | 
						|
                          begin : '@[A-Za-z]+'
 | 
						|
                      }
 | 
						|
                    ]
 | 
						|
                }
 | 
						|
            ),
 | 
						|
            hljs.C_LINE_COMMENT_MODE,
 | 
						|
            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: 'meta',
 | 
						|
                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: 'meta', 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: 'symbol', begin: '^\\s*[A-Za-z0-9_$]+:',
 | 
						|
                relevance: 0
 | 
						|
            }
 | 
						|
        ],
 | 
						|
        illegal: /#|<\//
 | 
						|
    }
 | 
						|
}
 |