Liigu sisu juurde

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

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

PHP
use Shikiphp\Shikiphp;

echo Shikiphp::codeToHtml($code, ['lang' => 'php', 'theme' => 'github-dark']);

Shikiphp::codeToTokens

PHP
/** @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.

PHP
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

PHP
/** @return list<list<ThemedToken>> */
public static function codeToTokensBase(string $code, array $options): array

codeToTokens alias, mis vastab väärtuse Shiki nimele codeToTokensBase.

Shikiphp::codeToTokensResult

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

PHP
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

PHP
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).

PHP
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

PHP
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

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

PHP
use Shikiphp\Highlighter;

$highlighter = Highlighter::createBundled();

See rakendab codeToHtml, codeToTokens, codeToTokensBase, codeToTokensResult ja getLastGrammarState sama signatuuriga nagu fassaad, ning lisaks järgmist.

Highlighter::codeToHast

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

PHP
use Shikiphp\Shikiphp;

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

Highlighter::codeToTokensWithThemes

PHP
/** @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.

PHP
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

PHP
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

PHP
/** @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:

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

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

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