Погуглив по интернету, нашел сравнительно небольшой javascript-модуль, который не страшно втиснуть непосредственно на страницу.
Для начала определим стили для подсветки. Каким шрифтом, цветом будут выводиться комментарии, каким строки, какая будет подсветка синтаксиса для функций.
/* Syntax Highlighting */
.S{color:green} /*Строки*/
.func{color:blue}/* Юзер-функции синие */
.C{color:orange}/* Комменты оранжевые */
.kwrd{font-weight:bold}/* Ключевые слова полужирные */
.R{color:gray}
.xml{color:red;}
Сам javascript-модуль для подсветки синтаксиса дам подкатом. В uncompressed-виде он довольно объёмный. Вот тут-то мне и пригодится инструмент для конвертации HTML кода.
<script type="text/javascript">
function syntax(code){
var comments = []; // Тут собираем все каменты
var strings = []; // Тут собираем все строки
var res = []; // Тут собираем все RegExp
var all = { 'C': comments, 'S': strings, 'R': res };
var safe = { '<': '<', '>': '>', '&': '&' };
return code
// Маскируем HTML
.replace(/[<>&]/g, function (m)
{ return safe[m]; })
// Убираем каменты
.replace(/\/\*[\s\S]*\*\//g, function(m)
{ var l=comments.length; comments.push(m); return '~~~C'+l+'~~~'; })
.replace(/([^\\])\/\/[^\n]*\n/g, function(m, f)
{ var l=comments.length; comments.push(m); return f+'~~~C'+l+'~~~'; })
// Убираем regexp
.replace(/\/(\\\/|[^\/\n])*\/[gim]{0,3}/g, function(m)
{ var l=res.length; res.push(m); return '~~~R'+l+'~~~'; })
// Убираем строки
.replace(/([^\\])((?:'(?:\\'|[^'])*')|(?:"(?:\\"|[^"])*"))/g, function(m, f, s)
{ var l=strings.length; strings.push(s); return f+'~~~S'+l+'~~~'; })
// Выделяем ключевые слова
.replace(/(var|function|typeof|new|return|if|for|in|while|break|do|continue|switch|case)([^a-z0-9\$_])/gi,
'<span class="kwrd">$1</span>$2')
// Выделяем скобки
.replace(/(\{|\}|\]|\[|\|)/gi,
'<span class="gly">$1</span>')
// Выделяем имена функций
.replace(/([a-z\_\$][a-z0-9_]*)[\s]*\(/gi,
'<span class="func">$1</span>(')
// Возвращаем на место каменты, строки, RegExp
.replace(/~~~([CSR])(\d+)~~~/g, function(m, t, i)
{ return '<span class="'+t+'">'+all[t][i]+'</span>'; })
// Выставляем переводы строк
.replace(/\n/g,
'<br/>')
// Табуляцию заменяем неразрывными пробелами
.replace(/\t/g,
' ');
}
</script>
Скрипт взят отсюда: скрипт подсвечивающий себя сам
Для вызова обработчика вам понадобится примерно следующий код.
Замечание: У меня все вставки кода находятся в тегах
<pre>
. Если у вас для этого используется, например, другой тег, но с каким-то определенным классом, то вместо getElementsByTagName используйте getElementsByClass.<script type="text/javascript">
var els = document.getElementsByTagName('pre');
for (var j=0; j < els.length; j++) {
var elt = (els[j]);
elt.innerHTML = syntax(elt.innerHTML);
}
</script>
Как добавить подсветку синтаксиса в Blogger?
1. CSS. Добавьте приведенные выше CSS-инструкции в ваш шаблон.
Настроить - Макет - Изменить HTML
Если затрудняетесь найти, где у вас в шаблоне расположены CSS-инструкции, просто вставьте перед строкой
]]></b:skin>
2. Добавление первого блока javascript.
Настроить - Макет - Элементы страницы
В самом низу страницы нажмите "Добавить гаджет" и выберите HTML/JavaScript
3. Добавление второго блока javascript. То же самое, что и для первого.
Внимание: блоки (гаджеты) должны располагаться в том же порядке, как они расположены в этом сообщении - "первый" над "вторым".
P.S. Гораздо естественнее было бы их вставить одним блоком или даже прописать непосредственно в шаблоне, но по непонятным причинам Blogger мне этого сделать не позволил.
0 Комментариев :
Отправить комментарий
Жги!