Aller au contenu

Points d'extension

phil/markup-bundle

Ce qu'une application configure, remplace ou décore. Les compilateurs, les purificateurs et les analyseurs sont ceux de phil/markup.

Configuration

OptionCe qu'elle étend
formats, default_formatLes formats dans lesquels les textes peuvent être écrits, dans l'ordre où le formulaire les propose, et celui qui est pris quand aucun n'est nommé
added_formatsLes formats qu'apportent les compléments : leur libellé, et le service de leur ReaderProvider ; un bundle complémentaire ajoute le sien en préfixe
levels, default_levelLe niveau le plus élevé auquel chaque format est purifié, quoi que demande un gabarit, et le niveau pris quand aucun n'est nommé
smart_punctuationSi le HTML passe par un typographe avant d'être purifié, et dans quelle locale
media_hostsLes hôtes d'où peuvent venir les images, donnés à SanitizerPurifier quel que soit le bundle qui l'enregistre

Voir Configuration.

Services

ServiceComment une application l'utilise
Phil\Markup\MarkupCompilerUn alias : pointé vers le compilateur propre de l'application (#[AsAlias(MarkupCompiler::class)]), et Markup, les filtres et les bundles qui compilent suivent ; la ponctuation soignée décore ce vers quoi il pointe
Phil\Markup\HtmlPurifierUn alias : pointé de la même façon vers le purificateur propre de l'application ; un purificateur que l'application construit elle-même garde ses propres hôtes d'images
Phil\Ujo\Html\HtmlRendererLe moteur de rendu avec lequel DefaultCompiler produit le rendu UJO : les moteurs de rendu de blocs de l'application, par la fabrique que documente phil/ujo-bundle, produisent le rendu de ses propres blocs dans chaque format
Phil\Markup\MarkupInjecté partout où des textes sont compilés et purifiés ; public
Phil\MarkupBundle\Infrastructure\Format\MarkupFormatsInjecté pour lire les formats et les niveaux activés ; public
Phil\MarkupBundle\Infrastructure\Conversion\UjoConverterInjecté pour convertir un texte en UJO ; lit avec DefaultCompiler quelle que soit la cible de MarkupCompiler ; public

Le compilateur propre d'une application change le HTML, pas les analyseurs : ce que lit le convertisseur reste les analyseurs de la bibliothèque et ceux des formats déclarés dans added_formats.

Dialectes et formats des compléments

Un dialecte de Markdown (ses règles en ligne et de bloc, la syntaxe qu'il lit autrement) est un MarkdownDialect de phil/markup, donné à un MarkdownReader ; un format entier est un ReaderProvider, qui donne cet analyseur ou un analyseur à lui. Un bundle complémentaire enregistre son fournisseur comme service, le déclare dans added_formats depuis prependExtension() et fournit les traductions de son libellé dans le domaine phil_markup :

public function prependExtension(ContainerConfigurator $container, ContainerBuilder $builder): void
{
    $builder->prependExtensionConfig('phil_markup', ['added_formats' => ['shout' => ['label' => 'Shout', 'reader' => ShoutReaders::class]]]);
}

public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void
{
    $builder->register(ShoutReaders::class, ShoutReaders::class);
}

L'application active ensuite le format, ou laisse formats vide pour les prendre tous.

Formulaires et Twig

PointComment
Les formats qu'offre un champMarkupFormatType, parmi les formats activés ; voir Formulaires
Compiler dans les gabaritsphil_markup, phil_purify et phil_ujo, avec un format et un niveau sous le plafond du format ; voir Twig