Перейти к содержимому

Параметры

Все точки входа (codeToHtml, codeToTokens, codeToTokensResult, codeToHast) принимают один и тот же массив параметров вторым аргументом. Обязательны только lang и тема.

lang

Обязательный параметр. Идентификатор или псевдоним языка для токенизации: php, ts, js, rust, python, html и так далее. Специальное значение 'ansi' подсвечивает управляющие последовательности терминала вместо использования грамматики (см. ANSI).

PHP
['lang' => 'php']

theme

Идентификатор одной темы. Обязателен, если не задано themes.

PHP
['lang' => 'php', 'theme' => 'github-dark']

themes

Карта ключей и идентификаторов тем для вывода с двойной (или несколькими) темами через переменные CSS. Обязательна, если не задано theme.

PHP
['lang' => 'ts', 'themes' => ['light' => 'github-light', 'dark' => 'github-dark']]

defaultColor

Какой ключ из themes задаёт цвет по умолчанию во встроенных стилях (для остальных используются переменные --shiki-<key> CSS). По умолчанию — 'light'. Установите false, чтобы выводить только переменные, без цвета по умолчанию во встроенных стилях; это удобно, если все цвета задаются через CSS.

PHP
['themes' => ['light' => '…', 'dark' => '…'], 'defaultColor' => 'dark']

transformers

Список объектов Shikiphp\Transformer\Transformer, применяемых через конвейер. См. раздел Трансформеры.

PHP
use Shikiphp\Transformer\Notation\NotationHighlight;

['transformers' => [new NotationHighlight()]]

decorations

Применяйте классы или атрибуты к произвольным диапазонам исходного текста, задавая строку и позицию символа. Каждый элемент декорации имеет формат {start, end, properties}, позиции указаны в системе {line, character} (отсчёт с нуля).

PHP
['decorations' => [
    [
        'start'      => ['line' => 0, 'character' => 0],
        'end'        => ['line' => 0, 'character' => 5],
        'properties' => ['class' => 'highlight'],
    ],
]]

colorReplacements

Изменяет цвета в выводе. Строковые элементы заменяют цвет во всём выводе; вложенные элементы с ключом по имени темы применяются только к этой теме.

PHP
['colorReplacements' => [
    '#ffffff'      => '#f8f8f2',          // global
    'github-dark'  => ['#24292e' => '#000'], // only in github-dark
]]

structure

'classic' (по умолчанию) выводит полную структуру pre > code > span.line > span. 'inline' выводит только диапазоны токенов с переносами строк, без обёртывающих элементов pre/code. Подходит для встроенных фрагментов кода.

PHP
['structure' => 'inline']

tabindex

Атрибут tabindex элемента <pre>. По умолчанию — 0. Передайте false, чтобы не выводить его.

PHP
['tabindex' => false]

cssVariablePrefix

Префикс переменных CSS для двойной темы. По умолчанию — '--shiki-'.

PHP
['cssVariablePrefix' => '--my-']

mergeWhitespaces

Управляет обработкой токенов пробелов. true (по умолчанию) объединяет токены, состоящие только из пробелов, со следующим токеном; 'never' разделяет начальные и конечные пробелы каждого токена на отдельные токены; false оставляет токены без изменений.

PHP
['mergeWhitespaces' => 'never']

tokenizeMaxLineLength

Не выполнять токенизацию строки и выводить для неё один обычный токен, если её длина не меньше этого значения в кодовых единицах UTF-16. По умолчанию ограничение отсутствует. Защита от чрезмерно длинных строк.

PHP
['tokenizeMaxLineLength' => 1000]

meta

Произвольные метаданные, передаваемые трансформерам через контекст трансформера; например, строка метаданных блока кода, которую использует MetaHighlight и MetaWordHighlight.

PHP
['meta' => ['__raw' => '{1,3-5}']]

grammarState

Shikiphp\GrammarState (из getLastGrammarState), с которого нужно возобновить токенизацию. Унаследованные lang и theme(s) должны совпадать. См. getLastGrammarState.