
# Параметри

Усі точки входу (`codeToHtml`, `codeToTokens`, `codeToTokensResult`,
`codeToHast`) приймають той самий масив параметрів другим аргументом. Обов’язкові лише `lang`
і тема.

## `lang`

**Обов’язковий.** Ідентифікатор мови або її псевдонім, який використовуватиметься для токенізації: `php`, `ts`, `js`,
`rust`, `python`, `html` тощо. Спеціальне значення `'ansi'` підсвічує
керівні послідовності термінала замість використання граматики (див. [ANSI](https://shikiphp.inline0.dev/uk/docs/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`, які застосовуються в конвеєрі.
Див. [Перетворювачі](https://shikiphp.inline0.dev/uk/docs/transformers).

```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`](https://shikiphp.inline0.dev/uk/docs/transformers#metahighlight) і
[`MetaWordHighlight`](https://shikiphp.inline0.dev/uk/docs/transformers#metawordhighlight).

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

## `grammarState`

`Shikiphp\GrammarState` (від `getLastGrammarState`), щоб відновити токенізацію
з цього місця. Передані `lang` і theme(s) мають збігатися. Див.
[`getLastGrammarState`](https://shikiphp.inline0.dev/uk/docs/api#shikiphpgetlastgrammarstate).
