[spip-dev] un critère "alternance"

Coucou,

je réfléchissais à introduire un nouveau critère "alternance", qui
permettrait de systématiser les choses du genre "un article en bleu, un
article en rouge" dans une liste d'articles.

Le programmer, ce n'est pas un problème, mais inventer la syntaxe est
problématique. Par exemple, on pourrait prendre :

<BOUCLE_x(ARTICLES){altern=yellow|green|red}>
<font color=#ALTERN>#TITRE</font>
</BOUCLE_x>

et on aurait : le permier article en jaune, le deuxième en vert, le
troisième en rouge, le quatrième en jaune, etc.

On pourrait y ajouter trois points : "vers le début", "vers la fin", et "sur
l'article courant".

ex : {yellow<green|red(white)>blue}

mettrait la première ligne en jaune, les suivantes en alternance
vert/rouge/vert/rouge..., et la dernière en bleu. Celle qui correspond à
l'article courant serait en blanc. Mais là on voit bien que cette syntaxe
devient un peu nulle...

En cas de conflit (pas assez d'articles pour mettre les premiers et les
derniers), il y a aurait une priorité évidente : l'article courant > le tout
premier > le tout dernier > la liste des premiers > la liste des derniers >
les alternances.

Autre exemple d'utilisation :
<B_aut>Par
<BOUCLE_aut(AUTEURS){id_article}{alternance=,> et>.}{par nom}>
#NOM#ALTERN
</BOUCLE_aut>

Me donnerait "Par Machin, Truc et Chouette." (actuellement il faut du php
dans les squelettes pour faire ce genre de choses, même un filtre ne
fonctionne pas)

-- Fil

<B_aut>Par
<BOUCLE_aut(AUTEURS){id_article}{alternance=,> et>.}{par nom}>
#NOM#ALTERN
</BOUCLE_aut>

Me donnerait "Par Machin, Truc et Chouette." (actuellement il faut du php

Plus précisément :

"""
Par
Chouette,
Truc et
Machin.
"""

-- Fil

Hello,

je réfléchissais à introduire un nouveau critère "alternance"[...]

<BOUCLE_x(ARTICLES){altern=yellow|green|red}>
<font color=#ALTERN>#TITRE</font>
</BOUCLE_x>

Je préfèrerais dans ce cas là favoriser cette syntaxe :

<BOUCLE_x(ARTICLES){altern=impair|pair}>
  <span class=#ALTERN>#TITRE</span>
</BOUCLE_x>

Cela permet bien plus de trucs ... :wink:

On pourrait y ajouter trois points : "vers le début", "vers la fin",
et "sur l'article courant".
ex : {yellow<green|red(white)>blue}

Ouh la la, ça se complique !

Autre exemple d'utilisation :
<B_aut>Par
<BOUCLE_aut(AUTEURS){id_article}{alternance=,> et>.}{par nom}>
#NOM#ALTERN
</BOUCLE_aut>

Là c'est carrément intéressant ... mais le '>' comme séparateur me
semble un peu limite ...

-Nicolas

> On pourrait y ajouter trois points : "vers le début", "vers la fin",
> et "sur l'article courant".
> ex : {yellow<green|red(white)>blue}

.../...

Là c'est carrément intéressant ... mais le '>' comme séparateur me
semble un peu limite ...

Voui, c'est un problème de syntaxe ; on a bien le {"inter"}, on peut
peut-être composer notre truc avec des guillemets aussi, mais je suis à
court d'imagination (et puis j'ai du boulot).

-- Fil

ou alors separer les deux concepts (plus lourd mais peut etre plus intuitif) :

pour les boucles simples, garder altern :

<BOUCLE_x(ARTICLES){altern=yellow|green|red}>
<font color=#ALTERN>#TITRE</font>
</BOUCLE_x>

Et pour ceux qui veulent pousser plus loin, altern_ :

{yellow<green|red(white)>blue} devient
<BOUCLE_x(ARTICLES){altern_debut=yellow}{altern_courant=white}{altern_fin=blue}{altern_JaiPasDidee=green|red}>
<font color=#ALTERN>#TITRE</font>
</BOUCLE_x>

A+
Ben.

Fil wrote:

Je ne suis vraiment pas partisan de tirer le systÚme de boucles dans ce sens. C'est la porte ouverte au développement d'un véritable langage, et là on va au suicide. Parce qu'on aurait aussi besoin de tout un tas de nouveaux types de boucles pour être certains de pouvoir "tout" faire: compter de 1 à 1000 mais par intervalle de 50, récupérer tous les jours de la semaine de la premiÚre semaine du deuxiÚme mois avant la publication du 3 dernier article, etc.

Toutes choses certes pratiques, je n'en doute pas, mais qui imposent que le systÚme de boucles devienne un véritable bon gros machin totalement imbitable. Alors que pour l'instant c'est avant tout un systÚme d'extraction d'informations de la base de données, ce qui limite pas mal sa complexité.

Ce genre de développement revient à faire du pseudo PHP, mais sans PHP. Donc un truc forcément mal ficelé.

Le cas précis ci-dessous:

- l'intérêt est tout de même trÚs limité; on complique le "langage" pour un effet pas franchement bandant; à moins d'aimer les sites présentés façon Excel;

- ça ne permettra évidemment pas de faire des choses propres (si j'affiche deux boucles successives, comment savoir si les "alternances" se suivront correctement);

- ça peut déjà être réalisé avec le systÚme de boucles actuelles sans recourir à PHP! On avait déjà fait ça avec l'exemple de l'affichage de boycles par tableau de 2 ou 3 lignes. C'est pareil en encore plus simple!

<BOUCLE_x(ARTICLES){1/2}{id_article}>
    <BOUCLE_bleu(ARTICLE){id_article}{par date}{0,1}{doublons}>
       <li> BLEU : #TITRE
    </BOUCLE_bleu>
    <BOUCLE_rouge(ARTICLE){id_article}{par date}{0,1}{doublons}>
       <li> ROUGE : #TITRE
    </BOUCLE_rouge>
</BOUCLE_x>

- c'est encore plus facile à réaliser en PHP. Autant je trouve trÚs dommage que beaucoup sautent sur des codes pourris en PHP pour faire des machins mal branlés avec SPIP (plutÎt que de faire du bon site robuste et simple à maintenir), autant quand il s'agit de faire des choses simples et efficaces, il faut mieux encourager à se mettre aux rudiments du PHP (c'est le cas ici) que développer un pseudo-langage.

ARNO*

Antoine wrote:

J'étais plutôt sceptique, pensant que les CSS permettaient de faire
ce genre de trucs. Mais, à vérifier dans la doc du W3C, ce n'est pas
le cas (quand les blaireaux du W3C seront-ils *enfin* payés à faire quelque chose d'utile ? c'est dingue que les sélecteurs CSS soient
si primitifs). Donc le critère a son intérêt.

Est-ce que je dis une bêêêêtise si je dis que CSS n'est chargé que de "mise en forme" ? Ce cas n'a-t-il déjà un pied dans le domaine plus exigeant des "transformations" de l'arbre auquel XSL est consacré ? Si on peut répondre oui (à cette dernière question), alors il n'est pas illogique que cela soit faisable avec XSL.

Oui, oui, je sais, c'est autrement plus complexe. Mais c'est comme bien des bonnes choses. Au début, c'est difficile, mais après, quel plaisir, quelle puissance !

Antoine wrote:
> J'étais plutôt sceptique, pensant que les CSS permettaient de faire
> ce genre de trucs. Mais, à vérifier dans la doc du W3C, ce n'est pas
> le cas (quand les blaireaux du W3C seront-ils *enfin* payés à faire
> quelque chose d'utile ? c'est dingue que les sélecteurs CSS soient
> si primitifs). Donc le critère a son intérêt.

Est-ce que je dis une bêêêêtise si je dis que CSS n'est chargé que de
"mise en forme" ?

Non, mais un style alternant entre deux (N) couleurs (alignements, etc.)
me paraît relever de la mise en forme et non de la structure sémantique.
Si je crée un tableau où les lignes alternent entre le blanc et
le gris clair (quel génie artistique ;-)), les lignes ont la même
"signification" quelle que soit leur couleur : donc je devrais pouvoir
spécifier ce comportement en CSS. D'ailleurs il y a déjà le sélecteur
":first-child" qui sert au même genre de composition (par exemple
utiliser une indentation différente pour le premier paragraphe).

Si
on peut répondre oui (à cette dernière question), alors il n'est pas
illogique que cela soit faisable avec XSL.

Oui, oui, je sais, c'est autrement plus complexe. Mais c'est comme
bien des bonnes choses. Au début, c'est difficile, mais après, quel
plaisir, quelle puissance !

Bof. De l'avis de beaucoup de ses utilisateurs potentiels, XSL est
une usine à gaz malcommode... Il y a des tas de projets visant à
construire d'autres formalismes de transformations plus "jolis"
(par exemple http://www.cduce.org/).

Antoine wrote:

Non, mais un style alternant entre deux (N) couleurs (alignements, etc.)
me paraît relever de la mise en forme et non de la structure sémantique.

Euh... Bah oui ! Bien obligé d'être d'accord avec toi. Cela m'agace (non pas d'être d'accord avec toi, mais d'être dans une impasse); faudrait que je trouve un solution...

Bof. De l'avis de beaucoup de ses utilisateurs potentiels, XSL est
une usine à gaz malcommode... Il y a des tas de projets visant à
construire d'autres formalismes de transformations plus "jolis"
(par exemple http://www.cduce.org/).

Malcommode, surement. Mais lorsque j'ai du mal à comprendre j'ai tjrs le 1er réflexe de penser que c'est ma p'tit tête qui est défaillante :wink: En fait, cela m'est finalement apparu comme relevant d'une logique inhabituelle, *trés* inhabituelle. On fini par s'y faire.

Merci pour l'exemple que je ne connais pas. J'y cours.