Preskoči na vsebino

Začetek

Namestitev

Lupina
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:

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 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:

PHP
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:

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

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:

PHP
use Shikiphp\Shikiphp;

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

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

Za celoten nabor funkcij glejte API.