Changeset 62745 in spip-zone


Ignore:
Timestamp:
Jun 20, 2012, 9:17:40 AM (7 years ago)
Author:
marcimat@…
Message:

Le Futilitaire possède une nouvelle fonction inserer (à appeler autant de fois qu'on veut), qui met en pile d'action les traitements sur les contenus à inserer, pile qui sera appliquée par la methode appliquer_lignes(). Pas beaucoup d'avantage par rapport à l'autre methode ajouter_lignes() si ce n'est que ça peut créer une écriture un peu plus légère, en mettant le contenu à la fin, avec un <<<, et sans parenthèses.

Paquet.xml : crédits, dépendences
$futil->inserer('paquet.xml', 17, 0, 1)->contenu = <<<EOF
<credit lien='http://pc.de/icons/#Munich'>PC (logo, icones)</credit>
EOF;

$futil->inserer('paquet.xml', 21, 0, 1)->contenu = <<<EOF
<necessite nom="verifier" compatibilite="[0.1.16;]" />
<!-- necessite nom="php" compatibilite="[5.3.3;]" /-->
EOF;

insertion des parties
$futil->appliquer_lignes();

Location:
_plugins_/fabrique
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fabrique/changelog.txt

    r62684 r62745  
    1212  alors de transformer les occurences de cet objet par les balises génériques
    1313  pour la fabrique.
     14* Le futilitaire a 2 nouvelles fonctions inserer() et appliquer_lignes(), la première
     15  définissant des lignes à modifier/inserer qui seront appliquées par la seconde en temps voulu
     16  Ça facilite un peu l'écriture.
    1417
    1518
  • _plugins_/fabrique/fabrique/prive/objets/liste/objets.html.html

    r62684 r62745  
    3131                |?{'{id_secteur?}'})][(#OBJET|criteres_champs_id)]{id_mot?}[(#OBJET|options_presentes{#LISTE{auteurs_liens,table_liens}}
    3232                |?{'{auteurs_liens.id_auteur?}','{id_auteur?}'})]{where?}[(#OBJET|champ_present{statut}
    33                 |?{'{statut?}'})]{recherche?}{tri \#ENV{par,num #GET{titre}},\#GET{defaut_tri}}{pagination \#ENV{nb,10}}>
     33                |?{'{statut?}'})]{recherche?}{tri \#ENV{par,num #GET{titre}},\#GET{defaut_tri}}[(#REM)
     34                        En plus du TRI, lorsqu'il y a par num sur les objets par defaut, SPIP ajoute un par en plus !
     35                ]{par #GET{titre}}{pagination \#ENV{nb,10}}>
    3436                <tr class='[(\#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]'>
    3537                        <td class='picto'>[(\#CHEMIN_IMAGE{#TYPE-16.png}|balise_img)]</td>[
  • _plugins_/fabrique/inc/futilitaire.php

    r62605 r62745  
    3333        public $dir_dest = "";
    3434        public $data = array();
     35
     36        /**
     37         * @var Futilitaire_Lignes[] Stockage des modifications de lignes a realiser
     38         */
     39        public $lignes = array();
    3540
    3641        /**
     
    269274                ecrire_fichier($dest, $contenu);
    270275        }
     276
     277        /**
     278         * Facilitateur d'écriture
     279         *
     280         * Cree une nouvelle ligne, la stocke et retourne l'objet cree pour modifications
     281         *
     282         * $futil->inserer($chemin, $debut, $fin, $tabulation)->contenu = X;
     283         * $futil->inserer($chemin, $debut, $fin, $tabulation)->contenu = <<<EOT
     284         * contenu
     285         * EOT;
     286         *
     287         * $futil->appliquer_lignes();
     288         *
     289         * @param string $chemin
     290         *              Chemin du fichier a traiter
     291         * @param int $debut
     292         *              Numero de la ligne a modifier
     293         * @param int $fin
     294         *              Nombre de lignes supprimées
     295         * @param int $tabulation
     296         *              Ajout de n caractères de tabulations en début de chaque ligne
     297         * @param string $contenu
     298         *              Contenu a inserer
     299         * @return Futilitaire_Ligne
     300         *              Retourne l'objet créé, ce qui permet de le modifier, tout en gardant
     301         *              ici au passage ce qui a été modifié.
     302        **/
     303        public function inserer($chemin, $debut, $fin=0, $tabulation=0, $contenu="") {
     304                return $this->lignes[] = new Futilitaire_Lignes($chemin, $debut, $fin, $tabulation, $contenu);
     305        }
     306
     307        /**
     308         * Applique les modifications de lignes qui ont été définies avec set_lignes()
     309         *
     310        **/
     311        public function appliquer_lignes() {
     312                // insertion des parties
     313                foreach ($this->lignes as $ligne) {
     314                        $this->ajouter_lignes(
     315                                $ligne->fichier,
     316                                $ligne->numero,
     317                                $ligne->remplace,
     318                                fabrique_tabulations($ligne->contenu, $ligne->tabulation));
     319                }
     320                // ces lignes ont été prises en compte !
     321                $this->lignes = array();
     322        }
    271323}
    272324
     325
     326/**
     327 * Espace de rangement d'information pour la modification de contenu d'un fichier
     328 *
     329**/
     330class Futilitaire_Lignes {
     331        public $contenu = "";
     332        public $fichier = "";
     333        public $numero  = 0;
     334        public $remplace = 0;
     335        public $tabulation = 0;
     336
     337        // definir rapidement tout
     338        public function __construct($fichier, $numero, $remplace=0, $tabulation=0, $contenu="") {
     339                $this->fichier    = $fichier;
     340                $this->numero     = $numero;
     341                $this->remplace   = $remplace;
     342                $this->tabulation = $tabulation;
     343                $this->contenu    = $contenu;
     344        }
     345}
     346
     347
    273348?>
Note: See TracChangeset for help on using the changeset viewer.