# Highlight.js Highlight.js нужен для подсветки синтаксиса в примерах кода в блогах, форумах и вообще на любых веб-страницах. Пользоваться им очень просто, потому что работает он автоматически: сам находит блоки кода, сам определяет язык, сам подсвечивает. Автоопределением языка можно управлять, когда оно не справляется само (см. дальше "Эвристика"). ## Подключение и использование Скрипт подключается одним файлом и одним вызовом инициализирующей функции: Автоматическое определение языков может работать довольно медленно, когда в него включено много языков, а фрагменты кода обширны. Чтобы ускорить процесс, можно перечислить в вызове инициализирующей функции только те языки, которые используются в тексте: При вызов таким образом highlight.js динамически подгружает соответствующие языковые файлы и таким образом весит меньше, чем с набором по умолчанию, который включает все реализованные языки. Дальше скрипт ищет на странице конструкции `
...
`, которые традиционно используются для написания кода, и код в них размечается на куски, помеченные разными значениями классов. Классам этим затем надо задать в стилях нужные цвета например так: .comment { color: gray; } .keyword { font-weight: bold; } .python .string { color: blue; } .html .atribute .value { color: green; } Можно использовать sample.css из комплекта как стартовую точку для собственного стиля. Полный список классов для разных языков приведен ниже ("Языки"). ### Плагин к WordPress Вообще, подключение highlight.js к блогу на [WordPress][wp] ничем не отличается от подключения куда-либо еще. Однако он может быть подключен к блогу и как плагин. Это удобно, если блог находится на общественном сервере, где вы не можете свободно редактировать файлы, или просто если вы привыкли пользоваться плагинами. Для установки плагина надо скопировать всю директорию с файлами highlight.js в директорию плагинов WordPress. После этого в панели плагинов его можно будет включать и отключать. В меню Options также добавляется страничка highlight.js, где можно настраивать список языков и CSS-стили. Удобно до одурения :-). [wp]: http://wordpress.org/ ## Экспорт В файле export.html находится небольшая программка, которая показывает и дает скопировать непосредственно HTML-код подсветки для любого заданного фрагмента кода. Это может понадобится например на сайте, на котором нельзя подключить сам скрипт highlight.js. ## Языки В списке приведены все языки, которые знает библиотека с классами, соответствующими различным синтаксическим частям. Python: keyword ключевое слово языка number число string строка (любого типа) comment комментарий decorator @-декоратор функции function заголовок функции "def some_name(...):" class заголовок класса "class SomeName(...):" title название функции или класса внутри заголовка params все, что в скобках внутри заголовка функции или класса Ruby: keyword ключевое слово языка string строка subst внутристроковая подстановка (#{...}) comment комментарий function заголовок функции "def ..." class заголовок класса "class ..." title название функции или класса внутри заголовка symbol символ Perl: keyword ключевое слово языка comment комментарий number число string строка regexp регулярное выражение sub заголовок процедуры (от "sub" до "{") variable переменная, начинающаяся с "$", "%", "@" operator оператор pod документация (plain old doc) PHP: keyword ключевое слово языка number число string строка (любого типа) comment комментарий phpdoc параметры phpdoc в комментарии variable переменная, начинающаяся с "$" XML: tag любой открывающий или закрывающий тег от "<" до ">" comment комментарий pi инструкции обработки () cdata раздел CDATA attribute атрибут value значение атрибута HTML: keyword тег языка HTML tag любой открывающий или закрывающий тег от "<" до ">" comment комментарий doctype объявление attribute атрибут внутри тега со значением или без value значение атрибута CSS: keyword тег языка HTML в селекторах или свойство CSS в правилах id #some_name в селекторах class .some_name в селекторах attr_selector селектор атрибутов (квадатные скобоки в a[href^=http://]) comment комментарий rules все от "{" до "}" value значение свойства внутри правила, все от ":" до ";" или до конца блока правил Django: keyword тег HTML в HTML, встроенные шаблонные теги и фильтры в шаблонах tag любой открывающий или закрывающий тег от "<" до ">" comment комментарий doctype объявление attribute атрибут внутри тега со значением или без value значение атрибута template_tag шаблонный тег {% .. %} variable шаблонная переменная {{ .. }} template_comment шаблонный комментарий, и {# .. #}, и {% comment %} filter фильтр от "|" до следующего фильтра или до конца тега argument аргумент фильтра Javascript: keyword ключевое слово языка comment комментарий number число literal специальное слово: "true", "false" и "null" string строка regexp регулярное выражение function заголовок функции title название функции внутри заголовка params все, что в скобках внутри заголовка функции VBScript: keyword ключевое слово языка comment комментарий number число string строка built_in встроенная функция Delphi: keyword ключевое слово языка comment комментарий (любого типа) number число string строка function заголовок функции, процедуры, конструктора или деструктора title название функции, процедуры, конструктора или деструктора внутри заголовка params все, что в скобках внутри заголовка функций class тело класса от "= class" до "end;" Java: keyword ключевое слово языка number число string строка comment комментарий annotaion аннотация javadoc javadoc-комментарии class заголовок класса от "class" до "{" title название класса внутри заголовка params все, что в скобках внутри заголовка класса inheritance слова "extends" и "implements" внутри заголовка класса C++: keyword ключевое слово языка number число string строка и одиночный символ comment комментарий preprocessor директива препроцессора RenderMan (RSL): keyword ключевое слово языка number число string строка comment комментарий preprocessor директива препроцессора shader ключевое слово шейдеров shading ключевое слово затенений built_in встроенная функция RenderMan (RIB): keyword ключевое слово языка number число string строка comment комментарий commands команда SQL: keyword ключевое слово (в основном из SQL'92 и SQL'99) number число string строка (любого типа: "..", '..', `..`) comment комментарий aggregate агрегатная функция Smalltalk: keyword ключевое слово number число string строка comment комментарий symbol символ array массив class имя класса char буква localvars блок локальных переменных Axapta: keyword ключевое слово языка number число string строка comment комментарий class заголовок класса от "class" до "{" title название класса внутри заголовка params все, что в скобках внутри заголовка класса inheritance слова "extends" и "implements" внутри заголовка класса preprocessor директива препроцессора 1С: keyword ключевое слово языка number число string строка comment комментарий function заголовок функции или процедуры title название функции внутри заголовка params все, что в скобках внутри заголовка функции preprocessor директива препроцессора ## Эвристика Определение языка, на котором написан фрагмент, делается с помощью довольно простой эвристики: программа пытается расцветить фрагмент всеми языками подряд, и для каждого языка считает количество подошедших синтаксически конструкций и ключевых слов. Для какого языка нашлось больше, тот и выбирается. Это означает, что в коротких фрагментах высока вероятность ошибки, что периодически и случается. Чтобы указать язык фрагмента явно, надо написать его название в виде класса к элементу ``:
...
Чтобы запретить расцветку фрагмента вообще, используется класс "no-highlight":
...
## Координаты Версия: 3.5 URL: http://softwaremaniacs.org/soft/highlight/ Автор: Иван Сагалаев (Maniac@SoftwareManiacs.Org) Лицензионное соглашение читайте в файле LICENSE. Список соавторов читайте в файле AUTHORS.ru.txt