
# Možnosti

Všechny vstupní body (`codeToHtml`, `codeToTokens`, `codeToTokensResult`,
`codeToHast`) přijímají stejné pole možností jako druhý argument. Povinné jsou pouze `lang`
a motiv.

## `lang`

**Povinné.** ID nebo alias jazyka, který se má tokenizovat — `php`, `ts`, `js`,
`rust`, `python`, `html` a tak dále. Speciální hodnota `'ansi'` zvýrazňuje
řídicí sekvence terminálu namísto použití gramatiky (viz [ANSI](https://shikiphp.inline0.dev/cs/docs/ansi)).

```php
['lang' => 'php']
```

## `theme`

Jedno ID motivu. Je povinné, pokud není uvedeno `themes`.

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

## `themes`

Mapa klíčů na ID motivů pro výstup s dvojím (nebo vícenásobným) motivem prostřednictvím proměnných CSS.
Je povinná, pokud není uvedeno `theme`.

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

## `defaultColor`

Který klíč v `themes` se stane výchozí barvou přímo v řádku (ostatní se stanou
proměnnými `--shiki-<key>` CSS). Výchozí hodnota je `'light'`. Nastavením na `false` se vypíší
pouze proměnné bez výchozí barvy přímo v řádku — užitečné, když všechny barvy řídíte z
CSS.

```php
['themes' => ['light' => '…', 'dark' => '…'], 'defaultColor' => 'dark']
```

## `transformers`

Seznam objektů `Shikiphp\Transformer\Transformer` použitých v průběhu
řetězce zpracování. Viz [Transformátory](https://shikiphp.inline0.dev/cs/docs/transformers).

```php
use Shikiphp\Transformer\Notation\NotationHighlight;

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

## `decorations`

Použije třídy nebo atributy na libovolné rozsahy zdroje podle pozice řádku a znaku.
Každá dekorace je `{start, end, properties}`, kde pozice jsou
`{line, character}` (od nuly).

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

## `colorReplacements`

Přemapuje barvy ve výstupu. Řetězcové položky globálně nahrazují barvu; vnořené
položky s klíčem názvu motivu se použijí pouze pro daný motiv.

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

## `structure`

`'classic'` (výchozí) vydá úplnou strukturu `pre > code > span.line > span`.
`'inline'` vydá pouze rozsahy tokenů s konci řádků, bez obalujících
`pre`/`code` — užitečné pro vložené úryvky.

```php
['structure' => 'inline']
```

## `tabindex`

Atribut `tabindex` prvku `<pre>`. Výchozí hodnota je `0`. Předejte `false`,
chcete-li jej vynechat.

```php
['tabindex' => false]
```

## `cssVariablePrefix`

Předpona používaná pro proměnné CSS motivu se dvěma motivy. Výchozí hodnota je `'--shiki-'`.

```php
['cssVariablePrefix' => '--my-']
```

## `mergeWhitespaces`

Řídí zpracování mezer v tokenech. `true` (výchozí) slučuje tokeny obsahující pouze mezery s následujícím tokenem; `'never'` rozděluje úvodní a
koncové mezery každého tokenu do samostatných tokenů; `false` ponechává tokeny beze změny.

```php
['mergeWhitespaces' => 'never']
```

## `tokenizeMaxLineLength`

Přeskočí tokenizaci řádku této délky nebo delší (a vydá pro něj jediný prostý token),
počítáno v jednotkách kódu UTF-16. Ve výchozím nastavení není limit nastaven. Ochrana proti patologickým
jednořádkovým vstupům.

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

## `meta`

Libovolná metadata předávaná transformátorům prostřednictvím kontextu transformátoru —
například řetězec metadat oploceného bloku kódu, který zpracovávají
[`MetaHighlight`](https://shikiphp.inline0.dev/cs/docs/transformers#metahighlight) a
[`MetaWordHighlight`](https://shikiphp.inline0.dev/cs/docs/transformers#metawordhighlight).

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

## `grammarState`

`Shikiphp\GrammarState` (z `getLastGrammarState`), od kterého se má pokračovat v tokenizaci.
Přenášené `lang` a theme(s) se musí shodovat. Viz
[`getLastGrammarState`](https://shikiphp.inline0.dev/cs/docs/api#shikiphpgetlastgrammarstate).
