Параметры
Все точки входа (codeToHtml, codeToTokens, codeToTokensResult, codeToHast) принимают один и тот же массив параметров вторым аргументом. Обязательны только lang и тема.
lang
Обязательный параметр. Идентификатор или псевдоним языка для токенизации: php, ts, js, rust, python, html и так далее. Специальное значение 'ansi' подсвечивает управляющие последовательности терминала вместо использования грамматики (см. ANSI).
['lang' => 'php']
theme
Идентификатор одной темы. Обязателен, если не задано themes.
['lang' => 'php', 'theme' => 'github-dark']
themes
Карта ключей и идентификаторов тем для вывода с двойной (или несколькими) темами через переменные CSS.
Обязательна, если не задано theme.
['lang' => 'ts', 'themes' => ['light' => 'github-light', 'dark' => 'github-dark']]
defaultColor
Какой ключ из themes задаёт цвет по умолчанию во встроенных стилях (для остальных используются переменные --shiki-<key> CSS). По умолчанию — 'light'. Установите false, чтобы выводить только переменные, без цвета по умолчанию во встроенных стилях; это удобно, если все цвета задаются через CSS.
['themes' => ['light' => '…', 'dark' => '…'], 'defaultColor' => 'dark']
transformers
Список объектов Shikiphp\Transformer\Transformer, применяемых через конвейер. См. раздел Трансформеры.
use Shikiphp\Transformer\Notation\NotationHighlight;
['transformers' => [new NotationHighlight()]]
decorations
Применяйте классы или атрибуты к произвольным диапазонам исходного текста, задавая строку и позицию символа. Каждый элемент декорации имеет формат {start, end, properties}, позиции указаны в системе {line, character} (отсчёт с нуля).
['decorations' => [
[
'start' => ['line' => 0, 'character' => 0],
'end' => ['line' => 0, 'character' => 5],
'properties' => ['class' => 'highlight'],
],
]]
colorReplacements
Изменяет цвета в выводе. Строковые элементы заменяют цвет во всём выводе; вложенные элементы с ключом по имени темы применяются только к этой теме.
['colorReplacements' => [
'#ffffff' => '#f8f8f2', // global
'github-dark' => ['#24292e' => '#000'], // only in github-dark
]]
structure
'classic' (по умолчанию) выводит полную структуру pre > code > span.line > span.
'inline' выводит только диапазоны токенов с переносами строк, без обёртывающих элементов pre/code. Подходит для встроенных фрагментов кода.
['structure' => 'inline']
tabindex
Атрибут tabindex элемента <pre>. По умолчанию — 0. Передайте false, чтобы не выводить его.
['tabindex' => false]
cssVariablePrefix
Префикс переменных CSS для двойной темы. По умолчанию — '--shiki-'.
['cssVariablePrefix' => '--my-']
mergeWhitespaces
Управляет обработкой токенов пробелов. true (по умолчанию) объединяет токены, состоящие только из пробелов, со следующим токеном; 'never' разделяет начальные и конечные пробелы каждого токена на отдельные токены; false оставляет токены без изменений.
['mergeWhitespaces' => 'never']
tokenizeMaxLineLength
Не выполнять токенизацию строки и выводить для неё один обычный токен, если её длина не меньше этого значения в кодовых единицах UTF-16. По умолчанию ограничение отсутствует. Защита от чрезмерно длинных строк.
['tokenizeMaxLineLength' => 1000]
meta
Произвольные метаданные, передаваемые трансформерам через контекст трансформера; например, строка метаданных блока кода, которую использует MetaHighlight и MetaWordHighlight.
['meta' => ['__raw' => '{1,3-5}']]
grammarState
Shikiphp\GrammarState (из getLastGrammarState), с которого нужно возобновить токенизацию. Унаследованные lang и theme(s) должны совпадать. См. getLastGrammarState.