
# Opțiuni

Toate punctele de intrare (`codeToHtml`, `codeToTokens`, `codeToTokensResult`,
`codeToHast`) acceptă același tablou de opțiuni ca al doilea argument. Sunt necesare doar `lang`
și o temă.

## `lang`

**Obligatoriu.** Identificatorul limbii sau aliasul folosit pentru tokenizare — `php`, `ts`, `js`,
`rust`, `python`, `html` și așa mai departe. Valoarea specială `'ansi'` evidențiază
secvențele de evadare ale terminalului în loc să folosească o gramatică (consultați [ANSI](https://shikiphp.inline0.dev/ro/docs/ansi)).

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

## `theme`

Un singur identificator de temă. Este obligatoriu dacă nu este furnizat `themes`.

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

## `themes`

O mapare de la chei la identificatori de teme pentru ieșirea cu teme duble (sau multiple), prin variabilele CSS.
Este obligatorie dacă nu este furnizat `theme`.

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

## `defaultColor`

Ce cheie din `themes` devine culoarea implicită inline (celelalte devin variabile
`--shiki-<key>` CSS). Valoarea implicită este `'light'`. Setați-o la `false` pentru a emite
doar variabile, fără o culoare implicită inline — util când controlați toate culorile din CSS.

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

## `transformers`

O listă de obiecte `Shikiphp\Transformer\Transformer` aplicate prin
fluxul de procesare. Consultați [Transformatoare](https://shikiphp.inline0.dev/ro/docs/transformers).

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

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

## `decorations`

Aplicați clase sau atribute unor intervale arbitrare din sursă, după linie/poziția caracterului. Fiecare decorare este `{start, end, properties}`, unde pozițiile sunt
`{line, character}` (încep de la zero).

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

## `colorReplacements`

Remapează culorile din ieșire. Elementele de tip șir înlocuiesc o culoare peste tot; elementele imbricate, indexate după numele temei, se aplică doar acelei teme.

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

## `structure`

`'classic'` (implicit) emite întreaga structură `pre > code > span.line > span`.
`'inline'` emite doar intervalele tokenurilor, cu întreruperi de linie, fără elemente `pre`/`code` de încadrare — util pentru fragmente inline.

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

## `tabindex`

Atributul `tabindex` pentru elementul `<pre>`. Valoarea implicită este `0`. Transmiteți `false`
pentru a-l omite.

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

## `cssVariablePrefix`

Prefixul folosit pentru variabilele CSS cu teme duble. Valoarea implicită este `'--shiki-'`.

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

## `mergeWhitespaces`

Controlează gestionarea tokenurilor de spații albe. `true` (implicit) unește tokenurile care conțin doar spații albe cu tokenul următor; `'never'` împarte spațiile albe de la începutul și sfârșitul fiecărui token în tokenuri separate; `false` lasă tokenurile neschimbate.

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

## `tokenizeMaxLineLength`

Omite tokenizarea (și emite un singur token simplu pentru) orice linie care are cel puțin această lungime,
în unități de cod UTF-16. Valoarea implicită nu impune nicio limită. Protejează împotriva intrărilor patologice pe o singură linie.

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

## `meta`

Metadate arbitrare transmise transformatoarelor prin contextul transformatorului —
de exemplu, șirul meta al delimitatorului de cod, procesat de
[`MetaHighlight`](https://shikiphp.inline0.dev/ro/docs/transformers#metahighlight) și
[`MetaWordHighlight`](https://shikiphp.inline0.dev/ro/docs/transformers#metawordhighlight).

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

## `grammarState`

Un `Shikiphp\GrammarState` (din `getLastGrammarState`) pentru a relua tokenizarea
începând de la. `lang` și theme(s) transmise trebuie să corespundă. Consultați
[`getLastGrammarState`](https://shikiphp.inline0.dev/ro/docs/api#shikiphpgetlastgrammarstate).
