Balises #SWITCH et #CASE

Ce plugin introduit dans SPIP les balises #SWITCH, #CASE et #CASE_DEFAULT qui reproduisent le fonctionnement des switch... case... default... du php et du C.

Utilisation

Les balises #SWITCH, #CASE et #CASE_DEFAULT permettent de comparer un élément à de multiples cas valeurs, et de renvoyer une expression selon le cas satisfait.

L’utilisation se fait donc en 2 ou 3 parties

  1. Un appel initial à
    #SWITCH

    permet de spécifier quelle expression est testée. L’expression est évaluée et sa valeur est mémorisée.

  2. De multiples appels à
    #CASE

    permettent de tester la valeur mémorisée avec plusieurs valeurs candidates. En cas d’égalité, la balise #CASE renvoie une valeur non vide (un espace) et les parties conditionnelles avant et après sont affichées.

  3. Un éventuel appel à
    #CASE_DEFAULT

    , qui renvoie une valeur vraie si aucun des

    #CASE

    n’a été satisfait.

À tout moment, il est possible d’accéder à la valeur testée et mémorisée par le #SWITCH avec le GET suivant :

#GET{_switch_}

.

Exemple

#SWITCH{#ENV{couleur}}
[(#CASE{bleu}) Wouah, ma couleur favorite !]
[(#CASE{rouge}) Ouh, c'est chaud !]
[(#CASE{vert}) L'avenir et l'espoir.]
[(#CASE_DEFAULT) Une couleur indicible...]

On peut insérer d’autres éléments de HTML ou balises spip entre les différents appels, et appeler les #CASE dans une boucle.

#SWITCH{#ENV{id_choix}}
<BOUCLE_case(ARTICLES)>
<span  [class="(#CASE{#ID_ARTICLE}|?{choisi,pas_choisi})"]>#TITRE</span>
</BOUCLE_case>
<span [class="(#CASE_DEFAULT|?{choisi,pas_choisi})"]>Autre</span>

Exemple d’usage

Vous souhaitez ranger toute une panoplie de squelettes json (calendrier.json, lesfestivals.json, programmation.json... ) dans un sous répertoire json, mais vous souhaitez pouvoir y accéder via ajax. Or, les squelettes rangés dans un sous répertoire ne peuvent être accédés que par un webmestre. Pour ajax, vous pouvez passer par un squelette d’aiguillage à la racine, qui prend un argument « squel » et dont le code serait :

#SWITCH{#SQUEL})
[(#CASE{calendrier}) <INCLURE{json/calendrier.json,mois=#MOIS}>]
[(#CASE{lesfestivals}) <INCLURE{json/lesfestivals.json,region=#REGION}>]
[(#CASE{programmation}) <INCLURE{json/programmation.json,groupe=#GROUPE}>]

Particularités

-  Si plusieurs #SWITCH se succèdent, la valeur d’un nouveau #SWITCH remplace la valeur du précédent.
-  Les structures #SWITCH #CASE sont plates : pas d’emboîtement possible à l’intérieur d’un même squelette. Si vous voulez vraiment emboîter 2 switch, il faut le faire dans un squelette inclu.

Un luxe

De même que les filtres |oui, |non ou |sinon et d’autres balises SPIP, ces balises ne sont pas absolument nécessaires car il est possible d’écrire vos squelettes autrement, sans elles, avec des balises et filtres plus élémentaires.

Mais c’est bien pratique de pouvoir les utiliser ! Et le code est plus lisible...

Discussion

4 discussions

  • La doc est complétée par un Exemple d’usage :

    Vous souhaitez ranger toute une panoplie de squelettes json (calendrier.json, lesfestivals.json, programmation.json... ) dans un sous répertoire json, mais vous souhaitez pouvoir y accéder via ajax. Or, les squelettes rangés dans un sous répertoire ne peuvent être accédés que par un webmestre. Pour ajax, vous pouvez passer par un squelette d’aiguillage à la racine, qui prend un argument « squel » et dont le code serait :

    #SWITCH{#SQUEL})
    [(#CASE{calendrier}) <INCLURE{json/calendrier.json,mois=#MOIS}>]
    [(#CASE{lesfestivals}) <INCLURE{json/lesfestivals.json,region=#REGION}>]
    [(#CASE{programmation}) <INCLURE{json/programmation.json,groupe=#GROUPE}>]

    Répondre à ce message

  • Nouvelle version 0.3.0, marquée stable : la balise #DEFAULT est renommée

    #CASE_DEFAULT

    par anticipation des potentiels conflits de nommage pouvant survenir dans un futur hypothétique impossible à tout à fait exclure.

    Répondre à ce message

  • 1

    N’est-ce pas déjà parfaitement réalisable avec les filtres de test de SPIP ?

    • Si, mais de même que de nombreux filtres ou balises ne sont pas strictement nécessaires et servent simplement à simplifier la vie, c’est plus simple, plus lisible et plus agréable à coder certains squelettes avec ces balises.

    Répondre à ce message

  • Mis à jour : il y a maintenant aussi la balise

    #DEFAULT

    pour clore le triptyque habituel.

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom

Dernière modification de cette page le 29 septembre 2017