couteau suisse et guillemets

Bonjour

Patrice m'a envoyé le code suivant à mettre dans mes_options.php et dans config.
Il enlève les guillemets... « ... et ....» .... et met le texte en italique.

Mais moi je souhaiterais : garder les guillemets ... « ... et ....» et mettre le texte en italique.
Comment faut-il modifier la lame perso ??

Merci. C'est pas urgent !

BP

Patrice Vanneufville a écrit :

Voici le code à tester.
Je rappelle qu'il faut rafraichir la page de config du CS pour que les modifs soient pris en compte.
Pat

############## COUTEAU SUISSE : LAME PERSO #################

// Installation d'une nouvelle lame personnalisee
$GLOBALS['mes_outils']['mes_citations'] = array(
         'nom' => 'Citations en italique',
         'description' => 'Une lame qui transforme toutes les citations <html>&laquo; toto &raquo;</html> en simple {italique}.',
         'auteur' => 'perso',
         'categorie' => 'typo-racc',
         'pipeline:pre_typo' => 'mes_citations_pre_typo',
);

// Fonction de remplacement
function mes_citations_rempl($texte) {
        return preg_replace(',«\s*(.*?)\s*»,msS', '{$1}', $texte);
}

// Fonction de pipeline
function mes_citations_pre_typo($texte) {
        if (strpos($texte, '«')===false) return $texte;
        // appeler mes_citations_rempl() une fois que certaines balises ont ete protegees
        return cs_echappe_balises('', 'mes_citations_rempl', $texte);
}

Le 14 déc. 07 à 12:02, b_poiraud a écrit :

Bonjour

Patrice m'a envoyé le code suivant à mettre dans mes_options.php et dans
config.
Il enlève les guillemets... « ... et ....» .... et met le texte en
italique.

Mais moi je souhaiterais : garder les guillemets ... « ... et ....» et
mettre le texte en italique.
Comment faut-il modifier la lame perso ??

Merci. C'est pas urgent !

BP

je ne sais toujours pas si c'est ponctuel, mais si c'est pas urgent, en 5 minutes cool(es) :
faire un dump non compressé (ou de décompresser ensuite)
l'ouvrir avec un éditeur de texte (l'ouverture peut être longue sur un très gros fichier en dizaines de Mo)
faire en rechercher/remplacer :
« --> « {
  » --> } »
sauvegarder
recharger

Claude

dlatr a écrit :

Le 14 déc. 07 à 12:02, b_poiraud a écrit :

Bonjour

Patrice m'a envoyé le code suivant à mettre dans mes_options.php et dans config.
Il enlève les guillemets... « ... et ....» .... et met le texte en
italique.

Mais moi je souhaiterais : garder les guillemets ... « ... et ....» et mettre le texte en italique.
Comment faut-il modifier la lame perso ??

Merci. C'est pas urgent !

BP

je ne sais toujours pas si c'est ponctuel, mais si c'est pas urgent, en 5 minutes cool(es) :
faire un dump non compressé (ou de décompresser ensuite)
l'ouvrir avec un éditeur de texte (l'ouverture peut être longue sur un très gros fichier en dizaines de Mo)
faire en rechercher/remplacer :
« --> « {
  » --> } »
sauvegarder
recharger

Claude

Merci Claude.
Ca c'est la méthode forte, avec une modification permanente de la base de donnée.

En ce qui concerne le CS, voici la nouvelle ligne de code en question :

    return preg_replace(',«\s*(.*?)\s*»,msS', '« {$1} »', $texte);

A tester !

Pat

Le 15 déc. 07 à 01:15, Pat a écrit :

dlatr a écrit :

Le 14 déc. 07 à 12:02, b_poiraud a écrit :

Bonjour

Patrice m'a envoyé le code suivant à mettre dans mes_options.php et
dans config.
Il enlève les guillemets... « ... et ....» .... et met le texte en
italique.

Mais moi je souhaiterais : garder les guillemets ... « ...
et ....» et mettre le texte en italique.
Comment faut-il modifier la lame perso ??

Merci. C'est pas urgent !

BP

je ne sais toujours pas si c'est ponctuel, mais si c'est pas urgent,
en 5 minutes cool(es) :
faire un dump non compressé (ou de décompresser ensuite)
l'ouvrir avec un éditeur de texte (l'ouverture peut être longue sur
un très gros fichier en dizaines de Mo)
faire en rechercher/remplacer :
« --> « {
  » --> } »
sauvegarder
recharger

Claude

Merci Claude.
Ca c'est la méthode forte, avec une modification permanente de la base
de donnée.

mais généralement, j'ai plein d'autres modifs ou rajouts à faire (comme charger 2000 images en autant d'articles, etc.)

En ce qui concerne le CS, voici la nouvelle ligne de code en question :

    return preg_replace(',«\s*(.*?)\s*»,msS', '« {$1} »', $texte);

A tester !

Pat

çà c'est la méthode pour seulement l'affichage ? ; hum justement j'ai le problème inverse, des champs titre en italique mais où le texte entre doit rester en romain, y compris les crochets carrés

donc (je ne sais pas s'il faut échapper les crochets carrés) ?
     return preg_replace(',[\s*(.*?)\s*],msS', '}[$1]{', $texte);

  ET seulement dans certains squelettes. Est-ce possible ?

Ce serait trop simple autrement :slight_smile:

Claude

dlatr a écrit :

mais généralement, j'ai plein d'autres modifs ou rajouts à faire (comme charger 2000 images en autant d'articles, etc.)

Souvent quand j'ai besoin d'un traitement automatisé de la BD, je me fabrique un petit script vite fait dans un_plugin/un_plugin_mes_options.php et je lance une page du site.
Mais fo être sûr de son coup sur les requêtes sql à utiliser.

En ce qui concerne le CS, voici la nouvelle ligne de code en question :
    return preg_replace(',«\s*(.*?)\s*»,msS', '« {$1} »', $texte);

çà c'est la méthode pour seulement l'affichage ?

Oui ! Je prends pas le risque de conseiller une modif en dur de la base de donnée... Autant le faire à la main avec phpmyadmin, c'est plus prudent. Dans cet exemple, le cache de SPIP prend le relai et implique en principe un seul calcul (par défaut) par jour sur un article donné.

; hum justement j'ai
le problème inverse, des champs titre en italique mais où le texte entre doit rester en romain, y compris les crochets carrés

donc (je ne sais pas s'il faut échapper les crochets carrés) ?
     return preg_replace(',[\s*(.*?)\s*],msS', '}[$1]{', $texte);

oui, il faut les échapper.

  ET seulement dans certains squelettes. Est-ce possible ?
Ce serait trop simple autrement :slight_smile:

Bah, tout est possible, non ?
Le plus simple est d'utiliser un filtre à mettre à la main dans les squelettes concernés, non ?

Sinon, tu peux toujours créer une lame pour le couteau suisse qui agira comme un traitement de la balise #TITRE :
  'traitement:TITRE:pre_typo' => 'echapper_crochets',

voire même, si tu préfères encore plus pointu :
  'traitement:TITRE/articles:pre_typo' => 'echapper_crochets',

Alors, la fonction echapper_crochets() peut très bien vérifier au départ _request('page') pour savoir dans quelle page on est et faire le traitement ou non...

Perso, j'aurais plus prudemment mis :

  return preg_replace(
    ',(\[.*?\]),msS',
    '<span style="font-style:normal">$1</span>',
    $texte);

Pat, qui espère ne pas dire trop de bétises !

Pat a écrit :

dlatr a écrit :
  

Le 14 déc. 07 à 12:02, b_poiraud a écrit :

Bonjour

Patrice m'a envoyé le code suivant à mettre dans mes_options.php et dans config.
Il enlève les guillemets... « ... et ....» .... et met le texte en
italique.

Mais moi je souhaiterais : garder les guillemets ... « ... et ....» et mettre le texte en italique.
Comment faut-il modifier la lame perso ??

Merci. C'est pas urgent !

BP

Voici la nouvelle ligne de code en question :

    return preg_replace(',«\s*(.*?)\s*»,msS', '« {$1} »', $texte);

A tester !

Pat

Merci Pat, ça fonctionne !
(au passage j'ai aussi utilisé la lame décoration pour fabriquer :
span.sign = position:absolute ; right:300px ;
qui me permet de mettre, à droite, la signature d'un texte..

||
div.postitg = background-color:yellow ; border:3px solid yellow ; color:black ; float:left ; font-size:85% ; padding:5px ; width:20% ;
div.postitd = background-color:yellow ; border:3px solid yellow ; color:black ; float:right ; font-size:85% ; padding:5px ; width:20%

qui me fait de post-it à droite ou à gauche, à ma guise !).
C'est vraiment pratique. Merci

Bon WE

BP

Le 15 déc. 07 à 02:11, Pat a écrit :

dlatr a écrit :

  […]

; hum justement j'ai
le problème inverse, des champs titre en italique mais où le texte
entre doit rester en romain, y compris les crochets carrés

donc (je ne sais pas s'il faut échapper les crochets carrés) ?
     return preg_replace(',[\s*(.*?)\s*],msS', '}[$1]{', $texte);

oui, il faut les échapper.

  ET seulement dans certains squelettes. Est-ce possible ?
Ce serait trop simple autrement :slight_smile:

Bah, tout est possible, non ?

[…]

Perso, j'aurais plus prudemment mis :

  return preg_replace(
    ',(\[.*?\]),msS',
    '<span style="font-style:normal">$1</span>',
    $texte);

Pat, qui espère ne pas dire trop de bétises !

merci Pat, ce filtre fonctionne bien :

/// garder toujours en romain les "hors titre" et "hors citation" meme dans texte italique

function romain($texte) {

  return preg_replace(
    ',(\[.*?\]),msS',
    '<span style="font-style:normal">$1</span>',
    $texte);
}
///

Claude