
# Darbo pradžia

## Diegimas

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

shikiphp reikia PHP 8.2 arba naujesnės versijos su `ext-json` ir `ext-mbstring`. Beveik kiekviename PHP rinkinyje abi šios galimybės įjungtos. Daugiau nieko nereikia: Node, savųjų Oniguruma sąsajų ar papildomų plėtinių.

## Pirmasis blokas

Statinis fasadas `Shikiphp` yra greičiausias būdas pradėti. Perduokite kodą, kalbos ID ir temos 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` grąžina visą, savarankiškai stilizuotą `<pre class="shiki …">` bloką. Priekinio plano ir fono spalvos įrašomos tiesiai į `<pre>`, todėl blokas tinkamai atvaizduojamas be papildomo stiliaus failo.

## Dvi temos (šviesioji ir tamsioji)

Vietoj vieno `theme` perduokite `themes` žemėlapį. shikiphp generuoja CSS kintamuosius (pavyzdžiui, Shiki), todėl vienas atvaizduotas blokas prisitaiko prie šviesiojo ir tamsiojo režimo:

```php
use Shikiphp\Shikiphp;

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

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

Pagal numatytuosius nustatymus temos `light` spalvos nustatomos tiesiogiai, o `dark` pateikiama per `--shiki-dark` kintamuosius. Tamsiąją temą įjunkite nedideliu kiekiu CSS — tą patį fragmentą dokumentuoja Shiki:

```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;
}
```

Parinktimi [`defaultColor`](https://shikiphp.inline0.dev/lt/docs/options#defaultcolor) galite pasirinkti, kurios temos spalvos bus nustatytos tiesiogiai, arba nustatyti `defaultColor: false`, kad būtų generuojami tik kintamieji.

## Kalbų ID ir slapyvardžiai

Kalbos nurodomos pagal jų Shiki ID arba slapyvardį — `php`, `ts`, `js`, `rust`, `python`, `html` ir t. t. Kaip išvardyti viską, kas įtraukta į paketą, žr. [Kalbos](https://shikiphp.inline0.dev/lt/docs/languages), o temų ID rasite puslapyje [Temos](https://shikiphp.inline0.dev/lt/docs/themes).

## Pakartotinis paryškintuvo naudojimas

Fasadas pagal poreikį sukuria ir talpykloje saugo paryškintuvą `Highlighter`, todėl pakartotinai iškvietus `Shikiphp::codeToHtml` vėl naudojamos tos pačios gramatikų ir temų talpyklos. Jei reikia išsamesnio API (HAST išvesties, pasirinktinių gramatikų, žetonų tinklelių), gaukite egzempliorių tiesiogiai:

```php
use Shikiphp\Shikiphp;

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

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

Visą funkcionalumą rasite [API](https://shikiphp.inline0.dev/lt/docs/api).
