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ą.
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:
public function loadGrammar(
array $rawTmLanguage,
?string $langId = null,
array $aliases = [],
array $embedded = [],
): void
$langId— ID, pagal kurį į ją kreipiamasi. Jei nenurodytas, naudojamas gramatikosname, o jei jo nėra — josscopeName.$aliases— papildomi ID, nurodantys tą pačią gramatiką.$embedded— kalbų ID, kurias ši gramatika įterpia; todėl parenkamos ir jų gramatikos.
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:
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.