API
shikiphp pakub kahte sisenemispunkti: staatilist Shikiphp fassaadi tavapärasteks juhtudeks ning Highlighter eksemplari kõige muu jaoks (HAST-väljund, kohandatud grammatikad ja teemad, teemavariandid ning paketi analüüs).
Shikiphp fassaad
Shikiphp\Shikiphp on õhuke staatiline fassaad laisalt loodud ja vahemällu salvestatud komplektse esiletõstja kohal.
Shikiphp::codeToHtml
public static function codeToHtml(string $code, array $options): string
Märgendab $code ja renderdab täieliku <pre class="shiki …"> HTML ploki. Valikute massiiv sisaldab alati väärtust lang ning kas väärtust theme või vastendust themes, samuti mis tahes renderdamise valikuid.
use Shikiphp\Shikiphp;
echo Shikiphp::codeToHtml($code, ['lang' => 'php', 'theme' => 'github-dark']);
Shikiphp::codeToTokens
/** @return list<list<ThemedToken>> */
public static function codeToTokens(string $code, array $options): array
Tagastab Shikiphp\Render\ThemedToken objektide palja 2D-märgendivõrgustiku (üks sisemine loend rea kohta) väärtuse HTML asemel.
use Shikiphp\Shikiphp;
$lines = Shikiphp::codeToTokens($code, ['lang' => 'js', 'theme' => 'nord']);
foreach ($lines as $line) {
foreach ($line as $token) {
// $token->content, $token->color, $token->fontStyle,
// $token->bgColor, $token->htmlStyle, $token->offset
}
}
Shikiphp::codeToTokensBase
/** @return list<list<ThemedToken>> */
public static function codeToTokensBase(string $code, array $options): array
codeToTokens alias, mis vastab väärtuse Shiki nimele codeToTokensBase.
Shikiphp::codeToTokensResult
public static function codeToTokensResult(string $code, array $options): TokensResult
Tagastab täisväärtusliku tulemuse, mis peegeldab väärtuse Shiki ülemise taseme codeToTokens: märgendivõrgustikku koos lahendatud värvide, teema nime, kahe teema juurstiili ja lõpliku grammatikaseisundiga. Vt allpool jaotist TokensResult.
use Shikiphp\Shikiphp;
$result = Shikiphp::codeToTokensResult($code, [
'lang' => 'php',
'theme' => 'github-dark',
]);
$result->tokens; // list<list<ThemedToken>>
$result->fg; // "#e1e4e8"
$result->bg; // "#24292e"
$result->themeName; // "github-dark"
$result->grammarState; // GrammarState
Shikiphp::getLastGrammarState
public static function getLastGrammarState(string $code, array $options): GrammarState
Märgendab $code ja tagastab lõpus saavutatud grammatikaseisundi (Shiki väärtuse getLastGrammarState). Edasise fragmendi märgendamise jätkamiseks samast seisundist andke see tagasi valiku grammarState kaudu — kasulik järkjärguliseks esiletõstmiseks. Annab vea, kui lang on 'ansi' (ANSI-l puudub grammatikaseisund).
use Shikiphp\Shikiphp;
$state = Shikiphp::getLastGrammarState("/* unterminated comment", [
'lang' => 'js',
'theme' => 'nord',
]);
$html = Shikiphp::codeToHtml("still inside the comment */", [
'lang' => 'js',
'theme' => 'nord',
'grammarState' => $state,
]);
Shikiphp::highlighter
public static function highlighter(): Highlighter
Tagastab jagatud komplektse Highlighter, luues selle esimesel kasutuskorral. Kasutage seda allpool toodud eksemplarimeetodite juurde pääsemiseks.
Shikiphp::use ja Shikiphp::reset
public static function use(Highlighter $highlighter): void
public static function reset(): void
use asendab eksemplari kohandatud Highlighter-ga (näiteks sellisega, kuhu olete laadinud kohandatud grammatikad või teemad), nii et fassaad suunab päringud sellele. reset tühjendab vahemällu salvestatud eksemplari, nii et järgmine kutse loob vaikimisi komplektse esiletõstja uuesti.
Highlighter
Shikiphp\Highlighter sisaldab kogu liidest. Hankige jagatud komplektne eksemplar käsuga Shikiphp::highlighter() või looge üks selgesõnaliselt:
use Shikiphp\Highlighter;
$highlighter = Highlighter::createBundled();
See rakendab codeToHtml, codeToTokens, codeToTokensBase,
codeToTokensResult ja getLastGrammarState sama signatuuriga nagu fassaad, ning lisaks järgmist.
Highlighter::codeToHast
public function codeToHast(string $code, array $options): \Shikiphp\Hast\Element
Koostab pre.shiki > code > (span.line > span)* HAST-puu, mille Shiki koostab, valmis
läbikäimiseks, muutmiseks või ise serialiseerimiseks. Seda serialiseerib codeToHtml
sisemiselt.
use Shikiphp\Shikiphp;
$hast = Shikiphp::highlighter()->codeToHast($code, [
'lang' => 'rust',
'theme' => 'nord',
]);
Highlighter::codeToTokensWithThemes
/** @return list<list<ThemedTokenWithVariants>> */
public function codeToTokensWithThemes(string $code, array $options): array
Tokeniseerib iga teema kohta ühe korra ja ühendab tulemuse tokenipõhiseks variants-iks, mille võtmed on teemavõtmed; see jäljendab Shiki codeToTokensWithThemes-i. Vajab themes-kaarti.
use Shikiphp\Shikiphp;
$lines = Shikiphp::highlighter()->codeToTokensWithThemes($code, [
'lang' => 'ts',
'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
$lines[0][0]->content; // token text
$lines[0][0]->variants['light']; // ThemedTokenStyle for the light theme
$lines[0][0]->variants['dark']; // ThemedTokenStyle for the dark theme
Highlighter::loadGrammar ja Highlighter::loadTheme
public function loadGrammar(
array $rawTmLanguage,
?string $langId = null,
array $aliases = [],
array $embedded = [],
): void
public function loadTheme(array $rawTheme): void
Registreerige kohandatud TextMate grammatika või VS Code teema dekodeeritud JSON-ist. Vt Kohandatud keeled ja teemad.
Paketi sisu päringud
/** @return list<string> */ public function loadedLanguages(): array
/** @return list<string> */ public function loadedThemes(): array
/** @return list<string> */ public function bundledLanguages(): array
/** @return list<string> */ public function bundledThemes(): array
loadedLanguages/loadedThemes kuvavad kõik praegu kasutatavad ID-d (paketiga kaasas olevad ja kõik registreeritud kohandatud ID-d). bundledLanguages/bundledThemes kuvavad ainult paketiga kaasas olevad ID-d. Vt Keeled ja Teemad.
Väärtusobjektid
ThemedToken
Shikiphp\Render\ThemedToken on üks kujundatud tekstiosa:
final class ThemedToken
{
public readonly string $content;
public readonly ?string $color;
public readonly int $fontStyle; // FontStyle bitmask
public readonly ?string $bgColor;
public readonly ?string $htmlStyle; // pre-built inline style (dual themes / ANSI)
public readonly int $offset; // UTF-16 code-unit offset into the source
}
fontStyle on bitimask objektist Shikiphp\Theme\FontStyle (NONE, ITALIC,
BOLD, UNDERLINE, STRIKETHROUGH).
TokensResult
Shikiphp\TokensResult on codeToTokensResult tagastatud väärtus:
final class TokensResult
{
public readonly array $tokens; // list<list<ThemedToken>>
public readonly ?string $fg; // resolved foreground
public readonly ?string $bg; // resolved background
public readonly ?string $themeName; // single id, or "shiki-themes …"
public readonly string|false|null $rootStyle; // dual-theme root style (or null)
public readonly ?GrammarState $grammarState;
}
GrammarState
Shikiphp\GrammarState sisaldab tokeniseerija reeglite pinu (teemanime järgi võtmetega), et esiletõstmist saaks jätkata vahepealsest punktist.
final class GrammarState
{
public readonly string $lang;
public function theme(): string; // first theme name
public function themes(): array; // list<string>
public function getScopes(?string $theme = null): array; // scopes in effect, innermost first
public function withTheme(string $theme): self;
}