
# Valikud

Kõik sisendpunktid (`codeToHtml`, `codeToTokens`, `codeToTokensResult`, `codeToHast`) võtavad teise argumendina sama valikute massiivi. Nõutavad on ainult `lang` ja teema.

## `lang`

**Nõutav.** Tokeniseeritava keele ID või alias — `php`, `ts`, `js`, `rust`, `python`, `html` jne. Eri väärtus `'ansi'` tõstab grammatika kasutamise asemel esile terminali paojadad (vt [ANSI](https://shikiphp.inline0.dev/et/docs/ansi)).

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

## `theme`

Üks teema ID. Nõutav, kui pole määratud `themes`.

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

## `themes`

Teema ID-de võtmete kaart kahe või enama teemaga väljundi jaoks, kasutades CSS muutujaid. Nõutav, kui pole määratud `theme`.

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

## `defaultColor`

Millise võtme värvist `themes` saab vaikimisi reasisene värv (teistest saavad `--shiki-<key>` CSS muutujad). Vaikeväärtus on `'light'`. Ainult muutujate väljastamiseks ilma vaikimisi reasisese värvita seadke väärtuseks `false` — kasulik, kui juhite kõiki värve failist CSS.

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

## `transformers`

Loend `Shikiphp\Transformer\Transformer` objektidest, mis rakendatakse töövoos. Vt [Teisendajad](https://shikiphp.inline0.dev/et/docs/transformers).

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

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

## `decorations`

Rakenda lähtekoodi suvalistele lõikudele rea ja märgi asukoha järgi klasse või atribuute. Iga dekoratsioon on `{start, end, properties}`, kus asukohad on `{line, character}` (indekseerimine algab nullist).

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

## `colorReplacements`

Väljundi värvide ümberseadistamine. Stringväärtused asendavad värvi kõikjal; teema nime järgi pesastatud väärtused kehtivad ainult sellele teemale.

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

## `structure`

Vaikimisi väljastab `'classic'` kogu struktuuri `pre > code > span.line > span`. `'inline'` väljastab ainult tokenite vahemikud reavahetustega, ilma ümbritsevate `pre`/`code` elementideta — kasulik reasiseste koodinäidete puhul.

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

## `tabindex`

Elemendi `<pre>` atribuut `tabindex`. Vaikeväärtus on `0`. Selle väljajätmiseks edastage `false`.

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

## `cssVariablePrefix`

Topeltteema CSS muutujate eesliide. Vaikeväärtus on `'--shiki-'`.

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

## `mergeWhitespaces`

Juhib tühimärke sisaldavate tokenite käsitlemist. Vaikimisi liidab `true` ainult tühimärke sisaldavad tokenid järgmise tokeniga; `'never'` jagab iga tokeni algus- ja lõputühikud eraldi tokeniteks; `false` jätab tokenid muutmata.

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

## `tokenizeMaxLineLength`

Jäta tokeniseerimine vahele ja väljasta ühe tavalise tokenina iga rida, mille pikkus on vähemalt see väärtus UTF-16 koodiühikutes. Vaikimisi piirang puudub. Kaitsemeetmena väga pikkade üherealiste sisendite vastu.

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

## `meta`

Suvalised metaandmed, mis edastatakse teisendajatele teisendaja konteksti kaudu — näiteks koodiploki metaandmete string, mida kasutavad [`MetaHighlight`](https://shikiphp.inline0.dev/et/docs/transformers#metahighlight) ja [`MetaWordHighlight`](https://shikiphp.inline0.dev/et/docs/transformers#metawordhighlight).

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

## `grammarState`

`getLastGrammarState` väärtus `Shikiphp\GrammarState`-st, millest tokeniseerimist jätkata. Kaasas olevad `lang` ja theme(s) peavad ühtima. Vt [`getLastGrammarState`](https://shikiphp.inline0.dev/et/docs/api#shikiphpgetlastgrammarstate).
