
# Začínáme

## Instalace

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

shikiphp vyžaduje PHP 8.2 nebo novější s `ext-json` a `ext-mbstring` — obojí je povoleno téměř v každé sestavě PHP. Nic dalšího: žádný Node, žádná nativní vazba Oniguruma ani další rozšíření.

## Váš první blok

Nejrychlejší cestou je statická fasáda `Shikiphp`. Předejte jí svůj kód, ID jazyka a ID motivu:

```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` vrací kompletní blok `<pre class="shiki …">` s vlastním stylem. Barvy textu a pozadí se zapisují přímo do `<pre>`, takže se blok vykreslí správně i bez dalšího stylopisu.

## Dvojice motivů (světlý a tmavý)

Místo jednoho `theme` předejte mapu `themes`. shikiphp vygeneruje proměnné CSS (například Shiki), takže se jeden vykreslený blok přizpůsobí světlému i tmavému režimu:

```php
use Shikiphp\Shikiphp;

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

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

Ve výchozím nastavení se barvy motivu `light` použijí přímo a `dark` se zpřístupní prostřednictvím proměnných `--shiki-dark`. Tmavý motiv aktivujete krátkým zápisem v CSS — stejný příklad Shiki je v dokumentaci:

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

Výchozí motiv, jehož barvy se zapíší přímo, můžete zvolit pomocí možnosti [`defaultColor`](https://shikiphp.inline0.dev/cs/docs/options#defaultcolor) nebo nastavením `defaultColor: false`, aby se generovaly pouze proměnné.

## ID jazyků a aliasy

Na jazyky se odkazuje pomocí jejich ID nebo aliasu Shiki — `php`, `ts`, `js`, `rust`, `python`, `html` a tak dále. V části [Jazyky](https://shikiphp.inline0.dev/cs/docs/languages) najdete postup, jak vypsat všechny dostupné jazyky; část [Motivy](https://shikiphp.inline0.dev/cs/docs/themes) obsahuje ID motivů.

## Opakované použití zvýrazňovače

Fasáda líně vytvoří a uloží zvýrazňovač `Highlighter` obsažený v balíčku, takže opakovaná volání `Shikiphp::codeToHtml` znovu používají stejné mezipaměti gramatik a motivů. Potřebujete-li pokročilejší API (výstup HAST, vlastní gramatiky, mřížky tokenů), získejte instanci přímo:

```php
use Shikiphp\Shikiphp;

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

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

Úplný přehled rozhraní najdete v [API](https://shikiphp.inline0.dev/cs/docs/api).
