
# Opsi

Semua titik masuk (`codeToHtml`, `codeToTokens`, `codeToTokensResult`,
`codeToHast`) menerima larik opsi yang sama sebagai argumen kedua. Hanya `lang`
dan tema yang wajib diberikan.

## `lang`

**Wajib.** Id atau alias bahasa yang digunakan untuk tokenisasi — `php`, `ts`, `js`,
`rust`, `python`, `html`, dan seterusnya. Nilai khusus `'ansi'` menyorot
urutan escape terminal alih-alih menggunakan tata bahasa (lihat [ANSI](https://shikiphp.inline0.dev/id/docs/ansi)).

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

## `theme`

Satu id tema. Wajib kecuali jika `themes` diberikan.

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

## `themes`

Peta kunci ke id tema untuk keluaran tema ganda (atau banyak) melalui variabel CSS.
Wajib kecuali jika `theme` diberikan.

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

## `defaultColor`

Kunci dalam `themes` yang menjadi warna bawaan inline (kunci lainnya menjadi
variabel `--shiki-<key>` CSS). Bawaan: `'light'`. Atur ke `false` untuk menghasilkan
hanya variabel tanpa nilai bawaan inline — berguna jika Anda mengatur semua warna melalui
CSS.

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

## `transformers`

Daftar objek `Shikiphp\Transformer\Transformer` yang diterapkan melalui
pipeline. Lihat [Transformer](https://shikiphp.inline0.dev/id/docs/transformers).

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

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

## `decorations`

Terapkan kelas atau atribut pada rentang sumber mana pun berdasarkan posisi baris/karakter.
Setiap dekorasi berupa `{start, end, properties}`, dengan posisi `{line, character}` (berbasis nol).

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

## `colorReplacements`

Petakan ulang warna pada keluaran. Entri string mengganti warna secara global; entri bertingkat
yang dikunci berdasarkan nama tema hanya berlaku untuk tema tersebut.

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

## `structure`

`'classic'` (bawaan) menghasilkan struktur `pre > code > span.line > span` lengkap.
`'inline'` hanya menghasilkan rentang token beserta jeda baris, tanpa pembungkus
`pre`/`code` — berguna untuk cuplikan inline.

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

## `tabindex`

Atribut `tabindex` pada elemen `<pre>`. Bawaan: `0`. Berikan `false`
untuk menghilangkannya.

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

## `cssVariablePrefix`

Prefiks untuk variabel CSS tema ganda. Bawaan: `'--shiki-'`.

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

## `mergeWhitespaces`

Mengontrol penanganan token spasi. `true` (bawaan) menggabungkan token yang hanya berisi spasi
ke token berikutnya; `'never'` memisahkan spasi awal dan akhir setiap token menjadi token tersendiri; `false` membiarkan token apa adanya.

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

## `tokenizeMaxLineLength`

Lewati tokenisasi (dan keluarkan satu token teks biasa) untuk setiap baris yang panjangnya mencapai
atau melebihi batas ini, dalam satuan kode UTF-16. Secara bawaan tidak ada batas. Ini merupakan perlindungan terhadap
masukan satu baris yang tidak wajar.

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

## `meta`

Metadata bebas yang diteruskan ke transformer melalui konteks transformer —
misalnya string meta code fence yang digunakan oleh
[`MetaHighlight`](https://shikiphp.inline0.dev/id/docs/transformers#metahighlight) dan
[`MetaWordHighlight`](https://shikiphp.inline0.dev/id/docs/transformers#metawordhighlight).

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

## `grammarState`

`Shikiphp\GrammarState` (dari `getLastGrammarState`) untuk melanjutkan tokenisasi
dari. `lang` dan theme(s) yang dibawa harus cocok. Lihat
[`getLastGrammarState`](https://shikiphp.inline0.dev/id/docs/api#shikiphpgetlastgrammarstate).
