Pāriet uz saturu

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.

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
]);

Pielāgotas gramatikas

loadGrammar reģistrē dekodētu .tmLanguage.json, lai jebkurš ieejas punkts to varētu izmantot pēc valodas ID:

PHP
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 gramatikas name, pēc tam tās scopeName.
  • $aliases — papildu ID, kas norāda uz to pašu gramatiku.
  • $embedded — valodu ID, ko iegulst šī gramatika; tiek atrisinātas arī to gramatikas.
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',
]);

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:

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']]);

Izsauciet Shikiphp::reset(), lai atgrieztos pie noklusējuma izcēlāja, kas iekļauts komplektā.