Pereiti prie turinio

Pasirinktinės kalbos ir temos

Įtrauktas rinkinys aprėpia visą Shiki katalogą, tačiau galite registruoti savo TextMate gramatiką arba VS Code temą iš iškoduoto JSON. Abu objektai saugomi egzemplioriuje Highlighter.

Pasirinktinės temos

Iškoduokite VS Code temos JSON failą ir perduokite jį loadTheme. Tema susieta su jos name, o pasirinktinė tema pakeičia įtrauktą tokio paties pavadinimo temą.

PHP
use Shikiphp\Shikiphp;

$highlighter = Shikiphp::highlighter();

$theme = json_decode(file_get_contents('my-theme.json'), true);
$highlighter->loadTheme($theme);

$code = '<?php echo "hello";';

echo $highlighter->codeToHtml($code, [
    'lang'  => 'php',
    'theme' => $theme['name'], // the theme's own name
]);

Pasirinktinės gramatikos

loadGrammar užregistruoja iškoduotą .tmLanguage.json, kad bet kuris įėjimo taškas galėtų ją naudoti pagal kalbos ID:

PHP
public function loadGrammar(
    array $rawTmLanguage,
    ?string $langId = null,
    array $aliases = [],
    array $embedded = [],
): void
  • $langId — ID, pagal kurį į ją kreipiamasi. Jei nenurodytas, naudojamas gramatikos name, o jei jo nėra — jos scopeName.
  • $aliases — papildomi ID, nurodantys tą pačią gramatiką.
  • $embedded — kalbų ID, kurias ši gramatika įterpia; todėl parenkamos ir jų gramatikos.
PHP
use Shikiphp\Shikiphp;

$highlighter = Shikiphp::highlighter();

$grammar = json_decode(file_get_contents('mylang.tmLanguage.json'), true);
$highlighter->loadGrammar($grammar, 'mylang', aliases: ['ml']);

$code = file_get_contents('example.mylang');

echo $highlighter->codeToHtml($code, [
    'lang'  => 'mylang',
    'theme' => 'github-dark',
]);

Gramatikos include nuorodos (#repo, $self, $base, other.scope) ir įterptosios kalbos susiejamos su jau paryškintuve užregistruotomis gramatikomis, todėl pirmiausia užregistruokite visas priklausomybes.

Pasirinktinio paryškintuvo naudojimas per fasadą

Jei norite, kad statinis fasadas Shikiphp naudotų jūsų pritaikytą paryškintuvą, perduokite jį naudodami Shikiphp::use:

PHP
use Shikiphp\Highlighter;
use Shikiphp\Shikiphp;

$myTheme = json_decode(file_get_contents('my-theme.json'), true);
$myGrammar = json_decode(file_get_contents('mylang.tmLanguage.json'), true);
$code = file_get_contents('example.mylang');

$highlighter = Highlighter::createBundled();
$highlighter->loadTheme($myTheme);
$highlighter->loadGrammar($myGrammar, 'mylang');

Shikiphp::use($highlighter);

// Now the facade delegates to your highlighter.
echo Shikiphp::codeToHtml($code, ['lang' => 'mylang', 'theme' => $myTheme['name']]);

Iškvieskite Shikiphp::reset(), kad vėl būtų naudojamas numatytasis paryškintuvas iš paketo.