123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- /*
- Language: Haxe
- Description: Haxe is an open source toolkit based on a modern, high level, strictly typed programming language.
- Author: Christopher Kaster <ikasoki@gmail.com> (Based on the actionscript.js language file by Alexander Myadzel)
- Contributors: Kenton Hamaluik <kentonh@gmail.com>
- Website: https://haxe.org
- */
- function haxe(hljs) {
- const HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';
- return {
- 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', // interpolate-able strings
- begin: '\'',
- end: '\'',
- contains: [
- hljs.BACKSLASH_ESCAPE,
- {
- className: 'subst', // interpolation
- begin: '\\$\\{',
- end: '\\}'
- },
- {
- className: 'subst', // interpolation
- begin: '\\$',
- end: /\W\}/
- }
- ]
- },
- hljs.QUOTE_STRING_MODE,
- hljs.C_LINE_COMMENT_MODE,
- hljs.C_BLOCK_COMMENT_MODE,
- hljs.C_NUMBER_MODE,
- {
- className: 'meta', // compiler meta
- begin: '@:',
- end: '$'
- },
- {
- className: 'meta', // compiler conditionals
- begin: '#',
- end: '$',
- keywords: {
- 'meta-keyword': 'if else elseif end error'
- }
- },
- {
- className: 'type', // function types
- begin: ':[ \t]*',
- end: '[^A-Za-z0-9_ \t\\->]',
- excludeBegin: true,
- excludeEnd: true,
- relevance: 0
- },
- {
- className: 'type', // types
- begin: ':[ \t]*',
- end: '\\W',
- excludeBegin: true,
- excludeEnd: true
- },
- {
- className: 'type', // instantiation
- begin: 'new *',
- end: '\\W',
- excludeBegin: true,
- excludeEnd: true
- },
- {
- className: 'class', // enums
- beginKeywords: 'enum',
- end: '\\{',
- contains: [hljs.TITLE_MODE]
- },
- {
- className: 'class', // abstracts
- 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
- },
- hljs.TITLE_MODE
- ],
- keywords: {
- keyword: 'abstract from to'
- }
- },
- {
- className: 'class', // classes
- begin: '\\b(class|interface) +',
- end: '[\\{$]',
- excludeEnd: true,
- keywords: 'class interface',
- contains: [
- {
- className: 'keyword',
- begin: '\\b(extends|implements) +',
- keywords: 'extends implements',
- contains: [
- {
- className: 'type',
- begin: hljs.IDENT_RE,
- relevance: 0
- }
- ]
- },
- hljs.TITLE_MODE
- ]
- },
- {
- className: 'function',
- beginKeywords: 'function',
- end: '\\(',
- excludeEnd: true,
- illegal: '\\S',
- contains: [hljs.TITLE_MODE]
- }
- ],
- illegal: /<\//
- };
- }
- module.exports = haxe;
|