Kohandatud keeled ja teemad
Paketiga kaasas olev valik katab kogu Shiki kataloogi, kuid saad registreerida ka oma TextMate grammatika või VS Code teema dekodeeritud JSON-ist. Mõlemad kuuluvad Highlighter eksemplari juurde.
Kohandatud teemad
Dekodeeri VS Code teema JSON-fail ja edasta see loadTheme-ile. Teema võti on selle name ning kohandatud teema alistab samanimelise paketiga kaasas oleva teema.
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
]);
Kohandatud grammatikad
loadGrammar registreerib dekodeeritud .tmLanguage.json, et iga sisenemispunkt saaks seda keele ID järgi kasutada:
public function loadGrammar(
array $rawTmLanguage,
?string $langId = null,
array $aliases = [],
array $embedded = [],
): void
$langId— ID, mille järgi sellele viidata. Kui see puudub, kasutatakse grammatikanameväärtust ja seejärelscopeNameväärtust.$aliases— lisa-ID-d, mis viitavad samale grammatikale.$embedded— selle grammatika põimitavad keele ID-d, et ka nende grammatikad lahendataks.
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',
]);
Grammatika include viited (#repo, $self, $base, other.scope) ja põimitud keeled lahendatakse esiletõstjal juba registreeritud grammatikate põhjal, seega registreeri sõltuvused kõigepealt.
Kohandatud esiletõstja kasutamine fassaadi kaudu
Kui soovid, et staatiline Shikiphp fassaad kasutaks kohandatud esiletõstjat, anna see edasi funktsiooniga 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']]);
Vaikimisi paketiga kaasas oleva esiletõstja taastamiseks kutsu Shikiphp::reset().