
# Alustamine

## Paigaldamine

```bash
composer require shikiphp/shikiphp
```

shikiphp vajab versiooni PHP 8.2 või uuemat koos `ext-json` ja `ext-mbstring`-ga — need mõlemad on lubatud peaaegu kõigis PHP järkudes. Rohkem pole vaja: ei Node’i, natiivset Oniguruma-sidumist ega lisalaiendusi.

## Sinu esimene plokk

Staatiline `Shikiphp` fassaad on kiireim viis alustamiseks. Edasta kood, keele ID ja teema ID:

```php
use Shikiphp\Shikiphp;

$html = Shikiphp::codeToHtml(<<<'PHP'
<?php
function greet(string $name): string {
    return "Hello, {$name}!";
}
PHP, [
    'lang'  => 'php',
    'theme' => 'github-dark',
]);

echo $html;
```

`codeToHtml` tagastab tervikliku, ise kujundatud `<pre class="shiki …">` ploki. Esiplaani- ja taustavärvid lisatakse tekstisiseselt `<pre>`-ile, nii et plokk renderdub õigesti ilma täiendava stiilitabelita.

## Kaks teemat (hele ja tume)

Ühe `theme` asemel edasta `themes` kaart. shikiphp lisab CSS muutujad (näiteks Shiki), et üks renderdatud plokk kohanduks heleda ja tumeda režiimiga:

```php
use Shikiphp\Shikiphp;

$code = 'const answer: number = 42';

echo Shikiphp::codeToHtml($code, [
    'lang'   => 'ts',
    'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
```

Vaikimisi on teema `light` värvid tekstisisesed vaikeväärtused ning `dark` avaldatakse `--shiki-dark` muutujatena. Tumeda teema aktiveerimiseks lisa veidi CSS-i — sama koodinäide, mida Shiki dokumenteerib:

```css
html.dark .shiki,
html.dark .shiki span {
  color: var(--shiki-dark) !important;
  background-color: var(--shiki-dark-bg) !important;
  /* and font styles */
  font-style: var(--shiki-dark-font-style) !important;
  font-weight: var(--shiki-dark-font-weight) !important;
  text-decoration: var(--shiki-dark-text-decoration) !important;
}
```

Saad valida, millise teema värvid on tekstisisesed vaikeväärtused, kasutades valikut [`defaultColor`](https://shikiphp.inline0.dev/et/docs/options#defaultcolor), või määrata `defaultColor: false`, et väljastataks ainult muutujad.

## Keele ID-d ja aliased

Keeltele viidatakse nende Shiki ID või aliase järgi — `php`, `ts`, `js`,
`rust`, `python`, `html` jne. Kõigi paketiga kaasas olevate keelte loendi kuvamist selgitab leht [Keeled](https://shikiphp.inline0.dev/et/docs/languages) ning teemade ID-d leht [Teemad](https://shikiphp.inline0.dev/et/docs/themes).

## Esiletõstja taaskasutamine

Fassaad loob paketiga kaasas oleva `Highlighter` laisalt ja salvestab selle vahemällu, nii et korduvad `Shikiphp::codeToHtml` väljakutsed kasutavad samu grammatika- ja teemavahemälusid. Kui vajad rikkalikumat API-i (HAST-väljund, kohandatud grammatikad, tokenivõrgud), hangi eksemplar otse:

```php
use Shikiphp\Shikiphp;

$code = 'fn main() {}';

$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);
```

Kogu liidese kirjeldust vaata lehelt [API](https://shikiphp.inline0.dev/et/docs/api).
