Changeset 93493 in spip-zone


Ignore:
Timestamp:
Dec 9, 2015, 7:04:53 PM (5 years ago)
Author:
tcharlss@…
Message:

On fait en sorte de ne pas renvoyer toujours le même texte : les mots sont "décalés" aléatoirement vers la gauche. Up de Z.

Location:
_plugins_/bolo/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/bolo/trunk/bolo_fonctions.php

    r93492 r93493  
    6565        return $p;
    6666}
     67
     68
     69/**
     70 * Décale le contenu d'un texte.
     71 *
     72 * On veut éviter que les faux textes commencent toujours par la même chose.
     73 * Ce filtre permet de varier le contenu du texte en "décalant" les mots.
     74 * Par exemple, si on décale tous les mots de 5 positions vers la gauche,
     75 * le 5ème mot va se retrouver au début, et tous les mots précédents seront collés à la fin.
     76 *
     77 * @example
     78 * Le texte suivant :
     79 * « Longtemps, je me suis levé de bonne heure »
     80 * donnerait ceci avec un décalage de 3 :
     81 * « suis levé de bonne heure. Longtemps, je me »
     82 *
     83 * @param string $texte
     84 *     Texte à traiter
     85 * @param int $decalage
     86 *     Nombre de mots à décaler, aléatoire par défaut.
     87 * @return string
     88 *     Texte avec les mots décalé
     89 */
     90function filtre_decaler_texte_dist($texte, $decalage='') {
     91
     92        // on place tous les mots dans un tableau associatif.
     93        // (position numérique du mot => mot)
     94        $mots = str_word_count($texte, 2);
     95
     96        // on récupère la position du mot de départ.
     97        // a) soit le numéro du mot est donné...
     98        if (intval($decalage)) {
     99                // on pondère l'decalage
     100                $decalage = ($decalage > count($mots)) ? $decalage % count($mots) : $decalage;
     101                // on récupère la position du mot correspondant
     102                $v = array_reverse($mots)[$decalage];
     103                $position = array_search($v,$mots);
     104        }
     105        // b) ...soit on choisit une position au hasard.
     106        else {
     107                $position = array_rand($mots);
     108        }
     109
     110        // on coupe le texte en 2.
     111        $debut = substr($texte, 0, $position);
     112        $fin = substr($texte, $position);
     113
     114        // on recolle tout ça.
     115        $texte = $fin.' '.$debut;
     116
     117        return $texte;
     118}
  • _plugins_/bolo/trunk/paquet.xml

    r93492 r93493  
    22        prefix="bolo"
    33        categorie="edition"
    4         version="0.3.2"
     4        version="0.3.3"
    55        etat="stable"
    66        compatibilite="[1.9.0;3.1.*]"
  • _plugins_/bolo/trunk/plugin.xml

    r93492 r93493  
    11<plugin>
    22
    3         <version>0.3.2</version>
     3        <version>0.3.3</version>
    44
    55        <nom>Bolo</nom>
Note: See TracChangeset for help on using the changeset viewer.