Začetek
Namestitev
composer require shikiphp/shikiphp
shikiphp potrebuje PHP 8.2 ali novejši z ext-json in ext-mbstring — oboje je omogočeno v skoraj vsaki gradnji PHP. Nič drugega: brez Node, izvorne vezave Oniguruma ali dodatnih razširitev.
Vaš prvi blok
Statična fasada Shikiphp je najhitrejša pot do začetka. Podajte svojo kodo, ID jezika in ID teme:
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 vrne popoln blok <pre class="shiki …"> z lastnim slogom. Barvi ospredja in ozadja sta zapisani neposredno v <pre>, zato se pravilno izriše brez dodatne slogovne datoteke.
Dve temi (svetla in temna)
Namesto ene teme theme podajte zemljevid themes. shikiphp odda spremenljivke CSS (kot je Shiki), zato se en izrisani blok prilagaja svetlemu in temnemu načinu:
use Shikiphp\Shikiphp;
$code = 'const answer: number = 42';
echo Shikiphp::codeToHtml($code, [
'lang' => 'ts',
'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
Barve teme light so privzeto vgrajene, tema dark pa je na voljo prek spremenljivk --shiki-dark. Temno temo aktivirajte z nekaj CSS — isti izsek, ki ga dokumentira Shiki:
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;
}
Izberete lahko, katera tema bo privzeta v vgrajenem slogu, z možnostjo defaultColor, ali nastavite defaultColor: false, da se oddajo samo spremenljivke.
ID-ji jezikov in vzdevki
Na jezike se sklicujete z njihovim ID-jem Shiki ali vzdevkom — php, ts, js, rust, python, html itd. Navodila za izpis vsega, kar je vključeno, najdete v razdelku Jeziki; ID-je tem pa v razdelku Teme.
Ponovna uporaba označevalnika kode
Fasada po potrebi ustvari in predpomni vgrajeni označevalnik kode Highlighter, zato ponovljeni klici funkcije Shikiphp::codeToHtml znova uporabijo iste predpomnilnike slovnic in tem. Če potrebujete zmogljivejši API (izhod HAST, slovnice po meri, mreže žetonov), pridobite primerek neposredno:
use Shikiphp\Shikiphp;
$code = 'fn main() {}';
$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);
Za celoten nabor funkcij glejte API.