Pielāgotas valodas un tēmas
Komplektā iekļautā kopa aptver visu Shiki katalogu, taču varat reģistrēt savu TextMate gramatiku vai VS Code tēmu no dekodēta JSON. Abas atrodas Highlighter instancē.
Pielāgotas tēmas
Dekodējiet VS Code tēmas JSON failu un nododiet to loadTheme. Tēma tiek identificēta pēc tās name, un pielāgotā tēma aizstāj tāda paša nosaukuma komplektā iekļauto tēmu.
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
]);
Pielāgotas gramatikas
loadGrammar reģistrē dekodētu .tmLanguage.json, lai jebkurš ieejas punkts to varētu izmantot pēc valodas ID:
public function loadGrammar(
array $rawTmLanguage,
?string $langId = null,
array $aliases = [],
array $embedded = [],
): void
$langId— ID, pēc kura uz to atsaukties. Ja nav norādīts, izmanto gramatikasname, pēc tam tāsscopeName.$aliases— papildu ID, kas norāda uz to pašu gramatiku.$embedded— valodu ID, ko iegulst šī gramatika; tiek atrisinātas arī to gramatikas.
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',
]);
Gramatiku include atsauces (#repo, $self, $base, other.scope) un iegultās valodas tiek sasaistītas ar gramatikām, kas jau reģistrētas izcēlājā, tāpēc vispirms reģistrējiet visas atkarības.
Pielāgota izcēlāja izmantošana, izmantojot fasādi
Ja vēlaties, lai statiskā Shikiphp fasāde izmantotu pielāgoto izcēlāju, nododiet to ar 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']]);
Izsauciet Shikiphp::reset(), lai atgrieztos pie noklusējuma izcēlāja, kas iekļauts komplektā.