Liigu sisu juurde

Alustamine

Paigaldamine

Shell
composer require shikiphp/shikiphp

shikiphp vajab versiooni PHP 8.2 või uuemat koos ext-json ja ext-mbstring-ga — need mõlemad on lubatud peaaegu kõigis PHP järkudes. Rohkem pole vaja: ei Node’i, natiivset Oniguruma-sidumist ega lisalaiendusi.

Sinu esimene plokk

Staatiline Shikiphp fassaad on kiireim viis alustamiseks. Edasta kood, keele ID ja teema 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 tagastab tervikliku, ise kujundatud <pre class="shiki …"> ploki. Esiplaani- ja taustavärvid lisatakse tekstisiseselt <pre>-ile, nii et plokk renderdub õigesti ilma täiendava stiilitabelita.

Kaks teemat (hele ja tume)

Ühe theme asemel edasta themes kaart. shikiphp lisab CSS muutujad (näiteks Shiki), et üks renderdatud plokk kohanduks heleda ja tumeda režiimiga:

PHP
use Shikiphp\Shikiphp;

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

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

Vaikimisi on teema light värvid tekstisisesed vaikeväärtused ning dark avaldatakse --shiki-dark muutujatena. Tumeda teema aktiveerimiseks lisa veidi CSS-i — sama koodinäide, mida Shiki dokumenteerib:

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

Saad valida, millise teema värvid on tekstisisesed vaikeväärtused, kasutades valikut defaultColor, või määrata defaultColor: false, et väljastataks ainult muutujad.

Keele ID-d ja aliased

Keeltele viidatakse nende Shiki ID või aliase järgi — php, ts, js, rust, python, html jne. Kõigi paketiga kaasas olevate keelte loendi kuvamist selgitab leht Keeled ning teemade ID-d leht Teemad.

Esiletõstja taaskasutamine

Fassaad loob paketiga kaasas oleva Highlighter laisalt ja salvestab selle vahemällu, nii et korduvad Shikiphp::codeToHtml väljakutsed kasutavad samu grammatika- ja teemavahemälusid. Kui vajad rikkalikumat API-i (HAST-väljund, kohandatud grammatikad, tokenivõrgud), hangi eksemplar otse:

PHP
use Shikiphp\Shikiphp;

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

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

Kogu liidese kirjeldust vaata lehelt API.