Jeziki in teme po meri
Vgrajeni nabor pokriva celoten katalog Shiki, lahko pa registrirate lastno slovnico TextMate ali temo VS Code iz dekodiranega JSON. Oboje je shranjeno na primerku Highlighter.
Teme po meri
Dekodirajte datoteko teme VS Code JSON in jo podajte funkciji loadTheme. Tema je indeksirana po svojem name, tema po meri pa preglasi vgrajeno temo z enakim imenom.
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
]);
Slovnice po meri
loadGrammar registrira dekodirani .tmLanguage.json, tako da ga lahko katera koli vstopna točka uporabi z ID-jem jezika:
public function loadGrammar(
array $rawTmLanguage,
?string $langId = null,
array $aliases = [],
array $embedded = [],
): void
$langId— ID za sklicevanje nanj. Če ga izpustite, se uporabinameslovnice, nato pa njenscopeName.$aliases— dodatni ID-ji, ki se razrešijo v isto slovnico.$embedded— ID-ji jezikov, ki jih ta slovnica vdeluje, zato se razrešijo tudi njihove slovnice.
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',
]);
Sklici slovnice include (#repo, $self, $base, other.scope) in vdelani jeziki se razrešijo v slovnice, ki so že registrirane v označevalniku kode, zato najprej registrirajte vse odvisnosti.
Uporaba označevalnika po meri prek fasade
Če želite, da statična fasada Shikiphp uporablja vaš prilagojeni označevalnik kode, ji ga predajte z 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']]);
Pokličite Shikiphp::reset(), da se vrnete na privzeti vgrajeni označevalnik kode.