Langages
phil/highlight-bundleLe coloriseur lit les langages que fournit phil/highlight (leurs noms et leurs alias sont listés dans la documentation
de cette bibliothèque) et ceux qu'ajoute l'application.
Les langages propres à l'application
Un service qui implémente Phil\Highlight\Language est ajouté au coloriseur : la configuration automatique lui donne
l'étiquette phil_highlight.language, et un service enregistré sans configuration automatique la reçoit à la main.
use Phil\Highlight\Language;
final readonly class GherkinLanguage implements Language
{
public function name(): string { return 'gherkin'; }
public function aliases(): array { return ['feature']; }
public function tokenize(string $code): array { /* … */ }
}
Un langage prend son nom et ses alias à tout langage qui les avait : un service nommé php remplace le PHP de la
bibliothèque. Les langages étiquetés sont ajoutés dans l'ordre d'enregistrement de leurs services : de deux langages du
même nom, celui qui est enregistré en dernier est gardé. L'écriture d'un analyseur lexical, ou la description d'un
langage de programmation par une Syntax, est expliquée par le guide d'ajout d'un langage de phil/highlight.
D'autres noms
aliases donne d'autres noms à un langage, chacun vers le nom ou un alias du langage qu'il représente. Un bloc de code
délimité comme vue en Markdown, ou écrit avec vue comme langage dans un éditeur par blocs, est alors coloré comme du
HTML :
phil_highlight:
aliases:
vue: html
jsonc: json
feature: gherkin # a language of the application
Les alias sont ajoutés après les langages étiquetés : ils peuvent donc en nommer un, et chacun prend son nom à tout
langage qui l'avait. La classe language-… du bloc garde le nom qu'a utilisé l'auteur.