(buffer, lexem, end)
| 487 | } |
| 488 | |
| 489 | function processModeInfo(buffer, lexem, end) { |
| 490 | var current_mode = modes[modes.length - 1]; |
| 491 | if (end) { |
| 492 | result += processBuffer(current_mode.buffer + buffer, current_mode); |
| 493 | return false; |
| 494 | } |
| 495 | |
| 496 | var new_mode = subMode(lexem, current_mode); |
| 497 | if (new_mode) { |
| 498 | result += processBuffer(current_mode.buffer + buffer, current_mode); |
| 499 | startNewMode(new_mode, lexem); |
| 500 | return new_mode.returnBegin; |
| 501 | } |
| 502 | |
| 503 | var end_level = endOfMode(modes.length - 1, lexem); |
| 504 | if (end_level) { |
| 505 | var markup = current_mode.className?'</span>':''; |
| 506 | if (current_mode.returnEnd) { |
| 507 | result += processBuffer(current_mode.buffer + buffer, current_mode) + markup; |
| 508 | } else if (current_mode.excludeEnd) { |
| 509 | result += processBuffer(current_mode.buffer + buffer, current_mode) + markup + escape(lexem); |
| 510 | } else { |
| 511 | result += processBuffer(current_mode.buffer + buffer + lexem, current_mode) + markup; |
| 512 | } |
| 513 | while (end_level > 1) { |
| 514 | markup = modes[modes.length - 2].className?'</span>':''; |
| 515 | result += markup; |
| 516 | end_level--; |
| 517 | modes.length--; |
| 518 | } |
| 519 | var last_ended_mode = modes[modes.length - 1]; |
| 520 | modes.length--; |
| 521 | modes[modes.length - 1].buffer = ''; |
| 522 | if (last_ended_mode.starts) { |
| 523 | startNewMode(last_ended_mode.starts, ''); |
| 524 | } |
| 525 | return current_mode.returnEnd; |
| 526 | } |
| 527 | |
| 528 | if (isIllegal(lexem, current_mode)) |
| 529 | throw 'Illegal'; |
| 530 | } |
| 531 | |
| 532 | var language = languages[language_name]; |
| 533 | var modes = [language.defaultMode]; |
no test coverage detected
searching dependent graphs…