Показать сообщение отдельно
  #8 (permalink)  
Старый 02.04.2014, 17:09
Аспирант
Отправить личное сообщение для NapalmRain Посмотреть профиль Найти все сообщения от NapalmRain
 
Регистрация: 17.03.2014
Сообщений: 40

Сообщение от рони Посмотреть сообщение
плагин по ссылке выше именно так и делает, но вы туда неходите )))
Ну как я уже сказал, задачей изначально было решить вопрос самостоятельно.

Учусь я. А учиться лучше всего получается на решении ошибок.

Результат вообще получился интересным и совсем не по тому пути, по которому пошёл изначально.

Не откажусь от комментариев:
(function( $ ){
	var phpWords = ['public', 'private', 'static', 'function', 'class', 'if', 'switch', 'case', 'break', 'echo', 'die', 'else', 'require_once', 'include', '$'];
	
	var init = function (object, arrayOfWords) {
		var words = [];
		for (var k in arrayOfWords) {
			words[arrayOfWords[k]] = arrayOfWords[k];
		}
		var include = object.html();
		var lines = include.split('\n');
		var newInclude = null;
		var wordsInLine;
		newInclude = '<table>';
		newInclude += '<tr class="codeLines"><td class="linesNubmbers">';
		for (var key in lines) {	
			num = parseInt(key)+1;
			newInclude += num+'<br>';
		}
		newInclude += '</td>';
		newInclude += '<td class="codeBlock">';
		for (var key in lines) {
			wordsInLine = lines[key].split(" ");
			for (var k in wordsInLine) {
				if (typeof(words[wordsInLine[k].trim()])!=='undefined') {
					wordsInLine[k] = '<span class="codeword">'+wordsInLine[k]+'</span>';
				}
			}
			lines[key] = wordsInLine.join(' ');
			
			newInclude += lines[key]+'<br>';
		}
		newInclude += '</td></tr>';
		newInclude += '</table>';
		object.html(newInclude);
	}
	
	$.fn.testsintax = function(language) {
		switch (language) {
			case 'php':
				init($(this), phpWords);
				break;
			case 'delphi':
				init($(this), delphiWords);
				break;
			case 'javascript': break;
			case 'java': break;
			case 'code': break;
			case 'c#': break;
	}
  };

})( jQuery );

$('document').ready(function() {
	$('#php').testsintax('php');
});

Опустил из кода всё, что касается конкретных языков, комментариев и прочих деталей. Только подсветка слов, заранее указанных в массиве.

Последний раз редактировалось NapalmRain, 02.04.2014 в 17:12.
Ответить с цитированием