Aller au contenu

phil/highlight-bundle

alpha

Du code coloré sur le serveur dans une application Symfony : dans les documents UJO, dans les gabarits, avec un thème prêt à lier.

phil/highlight-bundle intègre phil/highlight à une application Symfony. Il enregistre le Highlighter comme service, avec les langages que l'application écrit elle-même (tout service qui implémente Language, configuré automatiquement) et les alias de sa configuration. Il colore les blocs de code de chaque document UJO dont phil/ujo-bundle produit le rendu, ajoute le filtre Twig highlight et déclare dans AssetMapper sa propre feuille de style de thème.

Il s'adresse à toute application Symfony qui affiche du code : une documentation, un blogue, un forum, un wiki. Un bloc de code écrit dans un éditeur par blocs ou en Markdown ressort coloré sans rien écrire, et un gabarit colore un extrait avec {{ snippet|highlight('php') }}. La page n'a besoin d'aucun script ; le contrôleur de coloration de phil/ux-bundle colore quand même, dans le navigateur, les blocs dont le serveur ne connaît pas le langage.

C'est un bundle mince, écrit de zéro, sur symfony/config et symfony/dependency-injection. Twig, phil/ujo-bundle et AssetMapper sont facultatifs : le filtre n'est enregistré que si Twig est installé, les blocs de code ne sont colorés que si le moteur de rendu de ce bundle se trouve dans le conteneur, et la feuille de style n'est déclarée que si AssetMapper est installé.

La conception est simple. PhilHighlightBundle lit la configuration et déclare la feuille de style, HighlightServices enregistre les services, HighlighterPass ajoute les langages et les alias et décore le moteur de rendu UJO, AliasedLanguage donne à un langage ses alias configurés, et HighlightExtension contient le filtre.

État

PartieÉtat
Highlighter comme service : les langages fournis, ceux de l'application par configuration automatique, les alias configurésImplémenté et testé
Les blocs de code des documents UJO colorés, par le moteur de rendu de phil/ujo-bundle ; désactivableImplémenté et testé
Twig : highlight, le code échappé et coloré, ou seulement échappé pour un langage inconnuImplémenté et testé
La feuille de style du thème, claire et sombre, déclarée sous le nom phil-highlight/highlight.cssImplémenté

Documentation

DocumentContenu
InstallationLes prérequis, l'installation et l'activation du bundle.
ConfigurationChaque option et les services qu'elle fournit.
LangagesLes langages propres à l'application, et d'autres noms pour n'importe quel langage.
Documents UJOLes blocs de code des documents UJO colorés sur le serveur.
TwigLe filtre highlight et le HTML qui l'entoure.
ThèmeLa feuille de style, ses couleurs et leur modification.
Points d'extensionCe qu'une application implémente, remplace ou utilise.
ExceptionsCe que lancent le bundle et la bibliothèque.
TestsLes tests du bundle et les tests d'une application qui l'utilise.
RéférenceChaque classe et chaque service du bundle.

Démarrage rapide

composer require phil/highlight-bundle
# config/packages/phil_highlight.yaml
phil_highlight:
    aliases:
        vue: html
<link rel="stylesheet" href="{{ asset('phil-highlight/highlight.css') }}">

<pre><code class="language-php">{{ snippet|highlight('php') }}</code></pre>
{{ article.body|ujo_html }}  {# its code blocks coloured #}

Prérequis

PHP 8.5 ou plus récent, Symfony 8.2 et phil/highlight. Twig 3.21, pour le filtre ; phil/ujo-bundle, pour les blocs de code des documents UJO ; symfony/asset-mapper, pour la feuille de style.

Contribuer

Les contributions sont les bienvenues sur le monodépôt PHIL : lisez le guide de contribution et le code de conduite. Signalez une vulnérabilité en privé, comme l'explique la politique de sécurité, jamais dans un ticket public.

Licence

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Parler Haut Interagir Librement project. Voir LICENSE.