| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | /*Language: HaxeDescription: 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;
 |