Začínáme
Instalace
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:
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:
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:
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 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 najdete postup, jak vypsat všechny dostupné jazyky; část Motivy 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:
use Shikiphp\Shikiphp;
$code = 'fn main() {}';
$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);
Úplný přehled rozhraní najdete v API.