Pereiti prie turinio

Darbo pradžia

Diegimas

Shell
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 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, o temų ID rasite puslapyje Temos.

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.