()
| 298 | /* Initialization */ |
| 299 | |
| 300 | function compileModes() { |
| 301 | |
| 302 | function compileMode(mode, language, is_default) { |
| 303 | if (mode.compiled) |
| 304 | return; |
| 305 | var group; |
| 306 | |
| 307 | if (!is_default) { |
| 308 | mode.beginRe = langRe(language, mode.begin ? mode.begin : '\\B|\\b'); |
| 309 | if (!mode.end && !mode.endsWithParent) |
| 310 | mode.end = '\\B|\\b'; |
| 311 | if (mode.end) |
| 312 | mode.endRe = langRe(language, mode.end); |
| 313 | } |
| 314 | if (mode.illegal) |
| 315 | mode.illegalRe = langRe(language, mode.illegal); |
| 316 | if (mode.relevance === undefined) |
| 317 | mode.relevance = 1; |
| 318 | if (mode.keywords) { |
| 319 | mode.lexemsRe = langRe(language, mode.lexems || hljs.IDENT_RE, true); |
| 320 | for (var className in mode.keywords) { |
| 321 | if (!mode.keywords.hasOwnProperty(className)) |
| 322 | continue; |
| 323 | if (mode.keywords[className] instanceof Object) { |
| 324 | group = mode.keywords[className]; |
| 325 | } else { |
| 326 | group = mode.keywords; |
| 327 | className = 'keyword'; |
| 328 | } |
| 329 | for (var keyword in group) { |
| 330 | if (!group.hasOwnProperty(keyword)) |
| 331 | continue; |
| 332 | mode.keywords[keyword] = [className, group[keyword]]; |
| 333 | } |
| 334 | } |
| 335 | } |
| 336 | if (!mode.contains) { |
| 337 | mode.contains = []; |
| 338 | } |
| 339 | // compiled flag is set before compiling submodes to avoid self-recursion |
| 340 | // (see lisp where quoted_list contains quoted_list) |
| 341 | mode.compiled = true; |
| 342 | for (var i = 0; i < mode.contains.length; i++) { |
| 343 | if (mode.contains[i] == 'self') { |
| 344 | mode.contains[i] = mode; |
| 345 | } |
| 346 | compileMode(mode.contains[i], language, false); |
| 347 | } |
| 348 | if (mode.starts) { |
| 349 | compileMode(mode.starts, language, false); |
| 350 | } |
| 351 | } |
| 352 | |
| 353 | for (var i in languages) { |
| 354 | if (!languages.hasOwnProperty(i)) |
| 355 | continue; |
| 356 | compileMode(languages[i].defaultMode, languages[i], true); |
| 357 | } |
no test coverage detected
searching dependent graphs…