highlight-ts
Version:
Highlight.JS in TypeScript (and ES6).
129 lines • 4.12 kB
JavaScript
/*
Language: Haxe
Author: Christopher Kaster <ikasoki@gmail.com> (Based on the actionscript.js language file by Alexander Myadzel)
Contributors: Kenton Hamaluik <kentonh@gmail.com>
*/
import { BACKSLASH_ESCAPE, QUOTE_STRING_MODE, C_LINE_COMMENT_MODE, C_BLOCK_COMMENT_MODE, C_NUMBER_MODE, TITLE_MODE, } from '../common';
var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';
//const IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';
var HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';
export var Haxe = {
name: 'haxe',
aliases: ['hx'],
keywords: {
keyword: 'break case cast catch continue default do dynamic else enum extern ' +
'for function here if import in inline never new override package private get set ' +
'public return static super switch this throw trace try typedef untyped using var while ' +
HAXE_BASIC_TYPES,
built_in: 'trace this',
literal: 'true false null _'
},
contains: [
{
className: 'string',
begin: '\'', end: '\'',
contains: [
BACKSLASH_ESCAPE,
{
className: 'subst',
begin: '\\$\\{', end: '\\}'
},
{
className: 'subst',
begin: '\\$', end: '\\W}'
}
]
},
QUOTE_STRING_MODE,
C_LINE_COMMENT_MODE,
C_BLOCK_COMMENT_MODE,
C_NUMBER_MODE,
{
className: 'meta',
begin: '@:', end: '$'
},
{
className: 'meta',
begin: '#', end: '$',
keywords: { 'meta-keyword': 'if else elseif end error' }
},
{
className: 'type',
begin: ':[ \t]*', end: '[^A-Za-z0-9_ \t\\->]',
excludeBegin: true, excludeEnd: true,
relevance: 0
},
{
className: 'type',
begin: ':[ \t]*', end: '\\W',
excludeBegin: true, excludeEnd: true
},
{
className: 'type',
begin: 'new *', end: '\\W',
excludeBegin: true, excludeEnd: true
},
{
className: 'class',
beginKeywords: 'enum', end: '\\{',
contains: [
TITLE_MODE
]
},
{
className: 'class',
beginKeywords: 'abstract', end: '[\\{$]',
contains: [
{
className: 'type',
begin: '\\(', end: '\\)',
excludeBegin: true, excludeEnd: true
},
{
className: 'type',
begin: 'from +', end: '\\W',
excludeBegin: true, excludeEnd: true
},
{
className: 'type',
begin: 'to +', end: '\\W',
excludeBegin: true, excludeEnd: true
},
TITLE_MODE
],
keywords: {
keyword: 'abstract from to'
}
},
{
className: 'class',
begin: '\\b(class|interface) +', end: '[\\{$]', excludeEnd: true,
keywords: 'class interface',
contains: [
{
className: 'keyword',
begin: '\\b(extends|implements) +',
keywords: 'extends implements',
contains: [
{
className: 'type',
begin: IDENT_RE,
relevance: 0
}
]
},
TITLE_MODE
]
},
{
className: 'function',
beginKeywords: 'function', end: '\\(', excludeEnd: true,
illegal: '\\S',
contains: [
TITLE_MODE
]
}
],
illegal: /<\//
};
//# sourceMappingURL=haxe.js.map