Options
Tous les points d'entrée (codeToHtml, codeToTokens, codeToTokensResult,
codeToHast) prennent le même tableau d'options en deuxième argument. Seuls lang
et un thème sont obligatoires.
lang
Obligatoire. L'identifiant ou l'alias du langage à utiliser pour la tokenisation — php, ts, js,
rust, python, html, etc. La valeur spéciale 'ansi' met en évidence
les séquences d'échappement du terminal au lieu d'utiliser une grammaire (voir ANSI).
['lang' => 'php']
theme
Un seul identifiant de thème. Obligatoire sauf si themes est fourni.
['lang' => 'php', 'theme' => 'github-dark']
themes
Une correspondance entre clés et identifiants de thème pour produire plusieurs thèmes via les variables CSS. Obligatoire sauf si theme est fourni.
['lang' => 'ts', 'themes' => ['light' => 'github-light', 'dark' => 'github-dark']]
defaultColor
Quelle clé de themes devient la couleur par défaut en ligne (les autres deviennent des variables --shiki-<key> CSS). La valeur par défaut est 'light'. Réglez sur false pour générer uniquement des variables, sans couleur par défaut en ligne — pratique si vous gérez toutes les couleurs depuis CSS.
['themes' => ['light' => '…', 'dark' => '…'], 'defaultColor' => 'dark']
transformers
Une liste d'objets Shikiphp\Transformer\Transformer appliqués dans le pipeline. Consultez Transformateurs.
use Shikiphp\Transformer\Notation\NotationHighlight;
['transformers' => [new NotationHighlight()]]
decorations
Appliquez des classes ou des attributs à des plages arbitraires du code source, selon la ligne et la position du caractère. Chaque décoration est {start, end, properties}, avec des positions {line, character} (indexées à partir de zéro).
['decorations' => [
[
'start' => ['line' => 0, 'character' => 0],
'end' => ['line' => 0, 'character' => 5],
'properties' => ['class' => 'highlight'],
],
]]
colorReplacements
Remappez les couleurs dans la sortie. Les entrées sous forme de chaîne remplacent une couleur partout ; les entrées imbriquées par nom de thème ne s'appliquent qu'à ce thème.
['colorReplacements' => [
'#ffffff' => '#f8f8f2', // global
'github-dark' => ['#24292e' => '#000'], // only in github-dark
]]
structure
'classic' (par défaut) génère toute la structure pre > code > span.line > span.
'inline' génère uniquement les portées de jetons avec les sauts de ligne, sans enveloppe pre/code — utile pour les extraits en ligne.
['structure' => 'inline']
tabindex
L'attribut tabindex de l'élément <pre>. Valeur par défaut : 0. Passez false pour l'omettre.
['tabindex' => false]
cssVariablePrefix
Préfixe utilisé pour les variables CSS à double thème. Valeur par défaut : '--shiki-'.
['cssVariablePrefix' => '--my-']
mergeWhitespaces
Contrôle le traitement des jetons d'espaces blancs. true (par défaut) fusionne les jetons composés uniquement d'espaces blancs avec le jeton suivant ; 'never' sépare les espaces blancs de début et de fin de chaque jeton en jetons distincts ; false laisse les jetons intacts.
['mergeWhitespaces' => 'never']
tokenizeMaxLineLength
Ignore la tokenisation (et génère un seul jeton brut) pour toute ligne dont la longueur atteint ou dépasse cette limite, en unités de code UTF-16. Aucune limite par défaut. Protection contre les entrées anormales sur une seule ligne.
['tokenizeMaxLineLength' => 1000]
meta
Métadonnées arbitraires transmises aux transformateurs via le contexte du transformateur — par exemple la chaîne de métadonnées de bloc de code consommée par
MetaHighlight et
MetaWordHighlight.
['meta' => ['__raw' => '{1,3-5}']]
grammarState
Un Shikiphp\GrammarState (depuis getLastGrammarState) pour reprendre la tokenisation. Les lang et theme(s) transmis doivent correspondre. Consultez
getLastGrammarState.