
# Опции

Всички входни функции (`codeToHtml`, `codeToTokens`, `codeToTokensResult`,
`codeToHast`) приемат един и същ масив с опции като втори аргумент. Задължителни са само `lang`
и тема.

## `lang`

**Задължително.** Езиковият идентификатор или псевдонимът, с който да се токенизира — `php`, `ts`, `js`,
`rust`, `python`, `html` и т.н. Специалната стойност `'ansi'` откроява
терминалните екраниращи последователности вместо да използва граматика (вижте [ANSI](https://shikiphp.inline0.dev/bg/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/bg/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`

Пропуска токенизирането (и извежда един обикновен токен) за всеки ред с тази дължина или повече, измерена в 16-битови кодови единици. По подразбиране няма ограничение. Защита срещу патологично дълги редове.

```php
['tokenizeMaxLineLength' => 1000]
```

## `meta`

Произволни метаданни, предавани на трансформаторите чрез контекста на трансформатора —
например метаданните на кодовия блок, използвани от
[`MetaHighlight`](https://shikiphp.inline0.dev/bg/docs/transformers#metahighlight) и
[`MetaWordHighlight`](https://shikiphp.inline0.dev/bg/docs/transformers#metawordhighlight).

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

## `grammarState`

`Shikiphp\GrammarState` (от `getLastGrammarState`), от който да продължи токенизирането.
Пренесените `lang` и theme(s) трябва да съвпадат. Вижте
[`getLastGrammarState`](https://shikiphp.inline0.dev/bg/docs/api#shikiphpgetlastgrammarstate).
