Valider a70ea173 rédigé par bricebou's avatar bricebou
Parcourir les fichiers

On ajoute la gestion d'un nouveau raccourcis SPIP : <c|grammaire> avec gestion...

On ajoute la gestion d'un nouveau raccourcis SPIP : <c|grammaire> avec gestion de classes additionnelles, d'un id et d'autres attributs, genre data-* ; par exemple : <c|php line-numbers|data-start="4"|idcode>
parent a63f78d2
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+35 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -122,6 +122,41 @@ function coloration_code_baliser_pre($attributs, $code) {
	return "<pre><code$attributs>".$code."</code></pre>";
}

/**
 * Prise en charge du raccourci <c|grammaire>
 * avec gestion de classes additionnelles, de l'identifiant
 * et d'autres attributs, genre data-* ; par exemple:
 * <c|php line-numbers|data-start="4"|data-line="5"|id>
 * <c|php line-numbers|id>
 *
 * @param array $regs
 *
 * @return string
 */
function traiter_echap_c($regs) {
	$code = $regs[4];
	$code = spip_htmlspecialchars($code);
	$code = preg_replace('/\s*(\n|\r)/', '', $code, 1);
	$code = rtrim($code);

	$proprietes = explode('|', ltrim($regs[2], '|'));

	$classes = explode(' ', $proprietes[0]);
	$classes = coloration_code_classes_pour_prism($classes);

	$attributs = '';
	for ($i=1; $i < count($proprietes); $i++) { 
		
		if (strpos($proprietes[$i], '=')) {
			$attributs .= $proprietes[$i];	
		}
		else {
			$attributs .= 'id="' . $proprietes[$i] . '"';
		}
	}
	
	return '<pre ' . $attributs . '><code class="' . $classes . '">' . $code . '</code></pre>';
}

/**
 * Fonction de correspondance de classe simple (par exemple "php")
+15 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -268,3 +268,18 @@ function coloration_code_porte_plume_lien_classe_vers_icone($flux){
		'outil_kbd'=> $icones['outil_caracteres'],
	));
}

/**
 * Appel de la fonction gérant le raccourci <c|grammaire>
 * avec gestion de classes additionnelles, de l'identifiant
 * et d'autres attributs, genre data-* ; par exemple:
 * <c|php line-numbers|data-start="4"|data-line="5"|id>
 * <c|php line-numbers|id>
 */
function coloration_code_pre_echappe_html_propre($texte){
	$test = ',<(c)(\|(.*)*?)?>,UimsS';
	if (preg_match($test, $texte, $matches)) {
		$texte = echappe_html($texte,"",false,',<(c)(\|(.*)*?)?>(.*)</\1>,UimsS');
	}
	return $texte;
}
 No newline at end of file
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -26,6 +26,7 @@
	<pipeline nom="porte_plume_barre_pre_charger" inclure="coloration_code_pipelines.php" />
	<pipeline nom="porte_plume_barre_charger" inclure="coloration_code_pipelines.php" />
	<pipeline nom="porte_plume_lien_classe_vers_icone" inclure="coloration_code_pipelines.php" />
	<pipeline nom="pre_echappe_html_propre" inclure="coloration_code_pipelines.php" />

	<necessite nom="saisies" compatibilite="[3.37.1;[" />
	<necessite nom="porte_plume" />