Egyéni nyelvek és témák
A beépített készlet a teljes Shiki katalógust lefedi, de dekódolt JSON alapján saját TextMate nyelvtant vagy VS Code témát is regisztrálhat. Mindkettő az Highlighter példányon él.
Egyéni témák
Dekódoljon egy VS Code témájú JSON fájlt, majd adja át a loadTheme számára. A téma kulcsa a name; az egyéni téma felülírja az azonos nevű beépített témát.
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
]);
Egyéni nyelvtanok
A loadGrammar egy dekódolt .tmLanguage.json nyelvtant regisztrál, így bármely belépési pont használhatja a nyelvazonosítója alapján:
public function loadGrammar(
array $rawTmLanguage,
?string $langId = null,
array $aliases = [],
array $embedded = [],
): void
$langId— az azonosító, amellyel hivatkozhat rá. Ha nincs megadva, a nyelvtannameértéke, majd azscopeNameértéke lesz használva.$aliases— további azonosítók, amelyek ugyanahhoz a nyelvtanhoz tartoznak.$embedded— azok a nyelvazonosítók, amelyeket ez a nyelvtan beágyaz; ezek nyelvtanai is feloldásra kerülnek.
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',
]);
A nyelvtan include hivatkozásai (#repo, $self, $base, other.scope) és a beágyazott nyelvek feloldása a kiemelőn már regisztrált nyelvtanok alapján történik, ezért először regisztrálja a függőségeket.
Egyéni kiemelő használata a homlokzaton keresztül
Ha azt szeretné, hogy a statikus Shikiphp homlokzat az egyéni kiemelőt használja, adja át neki a Shikiphp::use segítségével:
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']]);
A beépített alapértelmezett kiemelő visszaállításához hívja meg a Shikiphp::reset() függvényt.