| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | module.exports = function(hljs) {  var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';  var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';  var HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';  return {    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: /<\//  };};
 |