Aller au contenu

Points d'extension

phil/highlight

La bibliothèque est du simple PHP et ne déclare aucun service. Ce qu'une application ajoute, ce sont des langages, et ce sur quoi elle compte, c'est la forme du HTML.

Language

Phil\Highlight\Language : un langage que lit le colorateur, ajouté par Highlighter::with() sous son nom et ses alias, à la place de tout langage qui les avait. Voir Ajouter un langage.

MéthodeContrat
name(): stringLe nom canonique, en minuscules : lettres, chiffres et _+#.-, jusqu'à 32 caractères
aliases(): list<string>D'autres noms, écrits de la même façon
tokenize(string $code): list<Token>Ne lève jamais d'exception et ne perd jamais un octet : les textes des jetons, joints, forment le code

Un langage de programmation est le plus souvent une Language\Syntax lue par Language\Code, sans classe à lui ; un langage d'une autre forme implémente lui-même Language.

Colorateurs

PointComment
Les langages connusHighlighter::default() pour chaque langage fourni, Highlighter::of() pour quelques-uns choisis, puis with() pour ceux de l'application
Remplacer un langage fourniwith() un langage qui porte son nom
La disposition d'un blocDes LineOptions sur toHtml() ou highlight() : numéros, plages mises en évidence, annotations ; voir Lignes
L'endroit où va le HTMLhighlight() a la forme du HtmlRenderer::withCodeHighlighter() de phil/ujo : les blocs de code des documents UJO sont colorés par lui ; voir Documents UJO

Le HTML et les thèmes

Les classes hl-* des balises span, une par TokenType, sont le contrat d'un thème : une feuille de style de l'application les colore comme elle le veut ; voir HTML et thèmes. Les types de jetons sont une énumération fermée : un langage y fait correspondre ce qu'il lit.