Сообщение от рони
|
плагин по ссылке выше именно так и делает, но вы туда неходите )))
|
Ну как я уже сказал, задачей изначально было решить вопрос самостоятельно.
Учусь я. А учиться лучше всего получается на решении ошибок.
Результат вообще получился интересным и совсем не по тому пути, по которому пошёл изначально.
Не откажусь от комментариев:
(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');
});
Опустил из кода всё, что касается конкретных языков, комментариев и прочих деталей. Только подсветка слов, заранее указанных в массиве.