<commit_before># Highlight.js

Highlight.js нужен для подсветки синтаксиса в примерах кода в блогах, 
форумах и вообще на любых веб-страницах. Пользоваться им очень просто, 
потому что работает он автоматически: сам находит блоки кода, сам 
определяет язык, сам подсвечивает.

Автоопределение языка можно запретить, когда оно не справляется (см. 
дальше "Эвристика").

## Подключение и использование

Скрипт подключается одним файлом и одним вызовом инициализирующей 
функции:

    <script type="text/javascript" src="highlight.js"></script>
    <script type="text/javascript">
      window.onload = function() {initHighlighting();}
    </script>

Автоматическое определение языков может работать довольно медленно, когда
языков много. Чтобы ускорить процесс, можно перечислить в вызове
функции initHighlighting только те языки, которые используются в тексте:

    <script type="text/javascript">
      window.onload = function() {initHighlighting('html', 'css');}
    </script>

Такое перечисление языков влияет только на автоматическое определение, 
но блоку кода язык можно указать и явно (см. главу "Эвристика").

Дальше скрипт ищет на странице конструкции `<pre><code>...</code></pre>`, 
которые традиционно используются для написания кода, и код в них 
размечается на куски, помеченные разными значениями классов. Классам 
этим затем надо задать в стилях нужные цвета например так:

    .comment {
      color: gray;
    }

    .keyword {
      font-weight: bold;
    }

    .python .string {
      color: blue;
    }

    .html .atribute .value {
      color: green;
    }

Полный список классов для разных языков приведен ниже.


## Языки

В списке приведены все языки, которые знает библиотека с классами, 
соответствующими различным синтаксическим частям.

Python:

  keyword         ключевое слово языка
  number          число
  string          строка (любого типа)
  comment         комментарий
  decorator       @-декоратор функции
  function        заголовок функции "def some_name(...):"
  class           заголовок класса "class SomeName(...):"
  title           название функции или класса внутри заголовка
  params          все, что в скобках внутри заголовка функции или класса
  
HTML:

  keyword         тег языка HTML
  tag             любой открывающий или закрывающий тег от "<" до ">"
  comment         комментарий
  attribute       атрибут внутри тега со значением или без
  value           значение атрибута

CSS:

  keyword         тег языка HTML в селекторах или свойство CSS в правилах
  id              #some_name в селекторах
  class           .some_name в селекторах
  attr_selector   селектор атрибутов (квадатные скобоки в a[href^=http://])
  comment         комментарий
  rules           все от "{" до "}"
  value           значение свойства внутри правила, все от ":" до ";" или
                  до конца блока правил

Delphi:

  keyword         ключевое слово языка
  comment         комментарий (любого типа)
  number          число
  string          строка
  function        заголовок функции, процедуры, конструктора или деструктора
  title           название функции, процедуры, конструктора или деструктора
                  внутри заголовка
  params          все, что в скобках внутри заголовка функций
  class           тело класса от "= class" до "end;"
  
Perl:

  keyword         ключевое слово языка
  comment         комментарий
  number          число
  string          строка
  regexp          регулярное выражение
  sub             заголовок процедуры (от "sub" до "{")
  variable        переменная, начинающаяся с "$"

PHP:

  keyword         ключевое слово языка
  number          число
  string          строка (любого типа)
  comment         комментарий
  phpdoc          параметры phpdoc в комментарии
  variable        переменная, начинающаяся с "$"

Java:

  keyword         ключевое слово языка
  number          число
  string          строка<commit_msg>Поправка в документацию для Perl'овых переменных<commit_after># Highlight.js

Highlight.js нужен для подсветки синтаксиса в примерах кода в блогах, 
форумах и вообще на любых веб-страницах. Пользоваться им очень просто, 
потому что работает он автоматически: сам находит блоки кода, сам 
определяет язык, сам подсвечивает.

Автоопределение языка можно запретить, когда оно не справляется (см. 
дальше "Эвристика").

## Подключение и использование

Скрипт подключается одним файлом и одним вызовом инициализирующей 
функции:

    <script type="text/javascript" src="highlight.js"></script>
    <script type="text/javascript">
      window.onload = function() {initHighlighting();}
    </script>

Автоматическое определение языков может работать довольно медленно, когда
языков много. Чтобы ускорить процесс, можно перечислить в вызове
функции initHighlighting только те языки, которые используются в тексте:

    <script type="text/javascript">
      window.onload = function() {initHighlighting('html', 'css');}
    </script>

Такое перечисление языков влияет только на автоматическое определение, 
но блоку кода язык можно указать и явно (см. главу "Эвристика").

Дальше скрипт ищет на странице конструкции `<pre><code>...</code></pre>`, 
которые традиционно используются для написания кода, и код в них 
размечается на куски, помеченные разными значениями классов. Классам 
этим затем надо задать в стилях нужные цвета например так:

    .comment {
      color: gray;
    }

    .keyword {
      font-weight: bold;
    }

    .python .string {
      color: blue;
    }

    .html .atribute .value {
      color: green;
    }

Полный список классов для разных языков приведен ниже.


## Языки

В списке приведены все языки, которые знает библиотека с классами, 
соответствующими различным синтаксическим частям.

Python:

  keyword         ключевое слово языка
  number          число
  string          строка (любого типа)
  comment         комментарий
  decorator       @-декоратор функции
  function        заголовок функции "def some_name(...):"
  class           заголовок класса "class SomeName(...):"
  title           название функции или класса внутри заголовка
  params          все, что в скобках внутри заголовка функции или класса
  
HTML:

  keyword         тег языка HTML
  tag             любой открывающий или закрывающий тег от "<" до ">"
  comment         комментарий
  attribute       атрибут внутри тега со значением или без
  value           значение атрибута

CSS:

  keyword         тег языка HTML в селекторах или свойство CSS в правилах
  id              #some_name в селекторах
  class           .some_name в селекторах
  attr_selector   селектор атрибутов (квадатные скобоки в a[href^=http://])
  comment         комментарий
  rules           все от "{" до "}"
  value           значение свойства внутри правила, все от ":" до ";" или
                  до конца блока правил

Delphi:

  keyword         ключевое слово языка
  comment         комментарий (любого типа)
  number          число
  string          строка
  function        заголовок функции, процедуры, конструктора или деструктора
  title           название функции, процедуры, конструктора или деструктора
                  внутри заголовка
  params          все, что в скобках внутри заголовка функций
  class           тело класса от "= class" до "end;"
  
Perl:

  keyword         ключевое слово языка
  comment         комментарий
  number          число
  string          строка
  regexp          регулярное выражение
  sub             заголовок процедуры (от "sub" до "{")
  variable        переменная, начинающаяся с "$", "%", "@"

PHP:

  keyword         ключевое слово языка
  number          число
  string          строка (любого типа)
  comment         комментарий
  phpdoc          параметры phpdoc в комментарии
  variable        переменная, начинающаяся с "$"

Java:

  keyword         ключевое слово языка
  number          число
  string          строка
{'fraction_non_alphanumeric': 0.05900266463646745, 'fraction_numerical': 0.0, 'mean_word_length': 2.503111111111111, 'pattern_counts': {'":': 2, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4683321', 'n_tokens_mistral': 2747, 'n_tokens_neox': 3248, 'n_words': 818}