О себе
Вы можете связаться со мной, зайдя в раздел Обратная связь
Что делаю?
Пишу
- Textpattern: больше чем просто блог
- На связи у Skype
Подсветка синтаксиса малыми средствами
В html-кодинге практически все можно сделать по крайней мере двумя способами: медленно и некрасиво или быстро и красиво. Другими словами – элегантно, когда сравнительно компактный код отображается корректно в наиболее известных браузерах.
Другое дело, что html не во всех случаях соответствует запросам. Тогда уже на помощь приходят различные «примочки», называемые фреймворками. Однако о фреймворках мы говорить не будем (хотя для обсуждения это очень интересная тема). Речь пойдет о более широком, в общем-то, понятии – о JavaScript.
Love story
В статьях я довольно часто привожу отрывки (листинги) различного кода. За оформление кода отвечает следующий элемент:
.preview {padding:1em 25px .3em;margin:0;border-left:3px solid #cfcfa5;background:#fafaed;}
Все бы хорошо, но этот способ имеет несколько недостатков: нет подсветки синтаксиса и нумерации строк, а весь код, если его не форматируешь, сбивается в некий бесформенный массив. В принципе, проблема не столь глобальна, но недавно я нашел средство под названием SyntaxHighlighter и убедился, что можно сделать, как я уже говорил, красиво и удобно.
Этот способ подсветки я впервые заметил на портале Yahoo Developer Network, после чего сразу же сохранил одну из страниц :). В содержании .js файлов стояла ссылка, где я и нашел то, что было нужно. SyntaxHighlighter поддерживает чуть более 10 разных языков включая CSS, PHP, AQL, Ruby, Java и др. Подсветка и нумерация и прочие удобства – все включено.
Практика
Сразу же обращаю ваше внимание: подсветка не «светит» без включенной опции JavaScript. Скорее всего, у большинства интернетчиков данная опция включена, так как далеко не все знают что это такое :). С другой стороны, на вашем сайте, посвященном какому бы то ни было программированию, такие «незнающие» люди вряд ли появятся. В таком случае, вам придется честно уведомить их, например, где-нибудь в footer’e web-страницы о том, что JavaScript выключать нежелательно.
Во всей мощи SyntaxHighlighter занимает 40 Kb, а если убрать ненужные скрипты — раза в два меньше… Да ну этот минимализм! :). Я лучше объясню вам, как внедрить SyntaxHighlighter в web-страницы. Мой «проектный» сайт базируется на Snews, поэтому стартовая страница – index.php (на самом деле это xhtml). В конце файла, перед тэгом </body> я прописал:
<script language=“javascript” src=“js/shCore.js”></script> <script language=“javascript” src=“js/shBrushCSS.js”></script> <script language=“javascript” src=“js/shBrushPhp.js”></script> <script language=“javascript” src=“js/shBrushCSharp.js”></script> <script language=“javascript” src=“js/shBrushXml.js”></script> <script language=“javascript”> dp.SyntaxHighlighter.HighlightAll(‘code’); </script>…
Как видите, я инициализировал только те скрипты (т. е., ту подсветку), которые буду использовать в дальнейшем. Кроме того, не забываем о ядре shCore.js – его подключаем обязательно. Нужные скрипты вы найдете в папке scripts/. Скопировав их на свой сайт, проверьте, правильно ли указаны все имена и пути. Как видно в вышеизложенном коде, я поместил скрипты в директорию /js.