Подсветка синтаксиса for Ucoz
Пост обновлен. Хочу представить вам мою разработку для системы uCoz - скрипт детальной подсветки кода. Цветовая схема подсветки аналогична схеме из программы Dreamweaver 8. Скрипт умеет подсвечивать css код, javascript код и условные коды системы uCoz. Так же скрипт способен выводить в отдельном окне выделенный исходный код и переключать режим отображения кода: с переносом длинных строк и без. Благодаря удобному вызову, скрипт может быть вызван в любой момент. Вот пример работы подсветки:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Презентация подсветки</title>
<style type="text/css">
html, body {margin:0;padding:0;background:#FFFFFF;font:11px 'Verdana';}
/*
* многострочные комментраии работают только
* в css и javascript блоках как и должны.
*/
.stylename {width:100px;height:auto !important;} /* выделяются все стили */
#myid {height:100%;width:expression(document.body.offsetWidth/2+'px');}
/* подсвечивается скрипт в css выражениях */
</style>
</head>
<body>
<!-- html теги подобного вида работают только в html, хотя
и сереют в javascript как и в Dreamweaver8
Далее идут спец теги:
-->
<form method="post" name="test" target="_blank">
<input type="checkbox" value="" />
<textarea name="test" cols="6" rows="7">
текст в текстареа блоке
</textarea>
</form>
<a href="http://studioad.ru" style='font-size:20px;'>Ссылка</a>
Обратите внимание, что в ссылке распознался атрибут style
А вот пример использования условных кодов системы ucoz:
Это форумЭто не форум
Это обычный текст со скобками {} [] (), кавычками "текст" 'текст' и знаками математических функций + - \ *
<img src="http://studioad.ru/image.jpg" alt="Описание" />
<table width="470" border="2" cellspacing="0" cellpadding="1">
<col/><col/>
<tr>
<td>Содержимое ячейки</td>
</tr>
<tr>
<td>Содержимое ячейки</td>
</tr>
</table>
<!-- теги отображаются правильно, теперь js -->
<script type="text/javascript">
// подсвечивает методы и ключевые слова
var number_8 = "11";
var number_9 = .5/9*4+27.2+parseInt(number_8);
// обратите внимание, как подсвечиваются цифры в именах переменных
// и просто в формулах, кстати да! =) - однострочные комментарии!
var a = document.getElementById('bla').replace(/(something|smth|anything)/ig,'Что либо');
var z = //gim; //пустое регулярное выражение
var p = "var q=/regular_expression/gm";
var bla45 = [/regular/g,/regular/im];
// правильная подсветка RegExp!
var b = "http://studioad.ru + $COMMENTS_NUM$"; // отличает однострочные комментарии от ссылок и распознает ucoz коды!
</script>
</body>
</html>
Установка на свой сайт
Сначала скопируйте этот код в шапку страниц, на которых собираетесь использовать скрипт (так же можете подключить отдельным файлом):
.bbCodeName{display:none!important;}
.codeMessage {white-space:nowrap;overflow:auto;max-height:none!important;margin:5px 0;padding:10px;background-color:#F3F3F3;color:#333;border:1px dashed #999!important;text-align:left;overflow-x:scroll\9}
.rowOne {background:#fff;}
.rowTwo {background:#f6f6f6;}
.codeMessage table{margin:0;border-collapse:collapse;width:100%;}
.codeMessage td {padding:0 5px 1px;font:12px 'Courier New',monospace;}
.decimal {width:1%;background:#3399ff;color:#fff;vertical-align:top;text-align:right;}
css{color:#F0F;}
js,htm{color:#000;}
figures {color:#f00;}
js exp {color:#060;}
js exppm {color:#960;}
symbols {color:#0047BD;}
tags {color:#0047BD;}
brackets {color:#0047BD;}
reserved {color:#0047BD;}
values {color:#0047BD;}
methods {color:#099;}
diffkeys {color:#909;}
important {color:#f00;}
ucoz {color:#8a0;}
params {color:#019;}
doctypes {color:#099;}
tables {color:#099;}
forms {color:#F90;}
anchors {color:#060;}
imgs {color:#909;}
styles {color:#909;}
styles commas, styles commas *{color:#060!important;}
csscommas, csscommas * {color:#060!important;}
scripts {color:#900;}
tags commas,js commas {color:#0047BD}
commas exp,commas exppm {color:#0047BD!important;}
csssymbols {color:#F0F;}
linecom,linecom *{color:#999!important;}
htmlcom,htmlcom *{color:#999!important;}
mlinecom,mlinecom *{color:#999!important;}
.ulight{color:#AAA;padding:5px 0 0;font-family:Arial !important;}
.ulight a{font-weight:bold;outline:0;}
.ulight a:link, .ulight a:visited, .ulight a:active{text-decoration:none;color:#888;}
.ulight a:hover{text-decoration:underline;color:#888;}
</style>
Затем в самый низ каждой страницы, после тега <body>, добавьте данный код (ну или вы можете аналогично подключить скрипт со своего сайта, заведомо его скачав):
Код отформатирован.
Первая версия:
- исправлена ошибка подсветки RegExp
- исправлено отображение цифр
- исправено отображение точки в десятичных дробях
- убраны лишние пробелы и исправлен баг подсветки методов
- испавлен баг лишних переносов строки при копировании css
Вторая версия:
- исправлен баг неправильного размера текстареа в выводимом окне
- добавлена подсветка setInterval
Третья версия:
- исправлена подсветка кавычек в style
- скрипт запакован и убран в файл
Четвертая версия:
- обновлен css
- исправлено отображение регулярных выражений
Пятая версия (важное обновление):
- обновлен css
- исправлено много багов
- добавлен режими отображения кода
- функции переписаны в объект
- добавлена подсветка ucoz кодов
Шестая версия (важное обновление):
- исправлено много багов по подсветке regexp
Седьмая версия (важное обновление):
- исправлены баги по подсветке regexp в сложных ситуациях
- добавлена подсветка css expressions
- исправлены множественные баги подсветки разных элементов
- переписан css и создан новый набор элементов
Восьмая версия (важное обновление):
- добавлена нумерация строк
- исправлено много багов
- что то исправил, не помню уже...
Десятая версия:
- умудрился забыть возвращать ucoz коды в css и в js, в этой версии эта досадная ошибка исправлена. Те кто подключил скрипт с моего сайта - радуйтесь, остальные - скачивайте новую версию.
ПС-просто я егэ сдаю :D
1) Сделать так, чтобы при простом выделении не захватывалась нумерация строк
2) Добавить кнопку "Копировать в буфер"
Данные идеи давно осуществлены и плагине SyntaxHighliter от хелпера. Всё необходимое уже адаптированное под uCoz сырьё предоставлю, если возьмётесь за доработку :)
[sayto]Nigelist[/sayto], помню, все помню.